简易桶排序:这是一种最快并且最简单的排序,但是如果需要排序的数范围很大,那么会极其占内存。
原理:其实就是把范围内每一个整数当作一个桶,而这个整数代表桶的序号,然后把输入的数与桶的序号一一比对,如果相同就把这个数放进桶中,最后按照桶的序号,从小到大或者从大到小把有数的桶序号打印出来,有几个数就打印几次。
方法:
1. 找出最小的桶和最大的桶(所有需要排序的数的范围)
int a,b;
//确定排序数的范围
cout<<"输入排序数的下限: ";
cin>>a;
cout<<"输入排序数的上限: ";
cin>>b;
2. 计算有多少个桶,并把所有的桶放在一起,初始时每个桶中都没有数(把范围所包括的整数创建成一个数组,并全部元素都为0)
int length;
length=b-a; //确定排序数范围的长度
int zs[length]={0}; //生成该长度的数组,并且初始化为0
3. 把与桶序号相同的数放入对应桶中(计算出数所在数组中的位置,这个位置的元素加一)
cout<<"输入要排序的数(以空格区分,回车结束):