题目:
张三是一位短跑教练,张三想用最快最简单的排序算法把今天10位参加测试的名次排出来假设每位运动员跑出来的成绩都是正整数你能帮张三写一个c++的程序让运动员快点知道名次吗?
输入:
十个需要排序的正整数。
输出:
十个排好序的正整数。
输入样例:
1 9 7 5 3 2 4 8 6 12
输出样例:
1 2 3 4 5 6 7 8 9 12
提示:
桶排序(因为桶排序速度快且非常简单)
源代码:
#include <bits/stdc++.h>//万能头文件
using namespace std;
int main()//主函数
{
//1.根据数字范围确定数组大小并赋值
int x[10001]={0};//把一维数组初始化让他从0开始
int a;
//2.数据放入对应的桶数组,并统计
for(int i=1;i<=10;i++)
{
cin>>a;//让用户从键盘输入10个数;
x[a]++;
}
//3.遍历桶数组,并输出数组的下标
for(int i=1;i<=10001;i++)
{
for(int j=1;j<=x[i];j++)
{
cout <<i<<" ";
}
}
return 0;
}
桶排序:
编辑分类
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响
图解:
记得点赞👍!