数组排序之桶排序

简介: 利用一维数组的知识简单实现桶排序,即对计算机随机读入的0-20之间的5个数从小到大排序

题目:给出0-20的5个随机数,对他们从小到大排列
题解:

include<stdio.h>

int main()
{
int a[21],i,b,c;
for(i=0;i<=20;i++)

a[i]=0;//对数组进行遍历,初始化为零;

for(i=1;i<=5;i++)//在数组中循环存放5个数
{

scanf("%d",&b);//把随机数暂时存在b里
a[b]++;//利用对应数组进行计数

}
for(i=0;i<=20;i++)//依次查看数组对应数出现次数;
for(c=1;c<=a[i];c++)

printf("%d",i);//出现次数等于打印次数

system("pause");//暂停程序,查看输出内容;
return 0;
}

目录
相关文章
|
5月前
|
搜索推荐 算法 Java
桶排序就是这么容易
桶排序就是这么容易
31 0
|
6月前
|
存储 搜索推荐 算法
C++桶排序的实现
C++桶排序的实现
|
6月前
|
搜索推荐 算法 C++
C++基数排序的实现
C++基数排序的实现
|
6月前
|
机器学习/深度学习 算法 搜索推荐
C++018-C++桶排序及其应用
C++018-C++桶排序及其应用
C++018-C++桶排序及其应用
|
算法 容器
计数排序与基数排序
计数排序与基数排序
152 0
|
算法 搜索推荐
桶排序
概念:桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。 桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。 桶排序最好情况下使用线性时间O(n),桶排序的时间复杂度,取决与对各个桶之间数据进行排序的时间复杂度,因为其它部分的时间复杂度都为O(n)。很显然,桶划分的越小,各个桶之间的数据越少,排序所用的时间也会越少。但相应的空间消耗就会增大。
基数排序
概念:基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到最高位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。 基数排序基于分别排序,分别收集,所以是稳定的。但基数排序的性能比桶排序要略差,每一次关键字的桶分配都需要O(n)的时间复杂度,而且分配之后得到新的关键字序列又需要O(n)的时间复杂度。假如待排数据可以分为d个关键字,则基数排序的时间复杂度将是O(d*2n) ,当然d要远远小于n,因此基本上还是线性级别的。 基数排序的空间复杂度为O(n+k),其中k为桶
|
搜索推荐 算法 C++
C++实现排序 - 03 计数排序、桶排序和基数排序
今天我们继续来整理与 O(n+k) 有关的三个排序算法,即计数排序、桶排序和基数排序。
591 0
C++实现排序 - 03 计数排序、桶排序和基数排序
非比较排序 (计数排序 && 基数排序)
非比较排序 (计数排序 && 基数排序)
134 0
非比较排序 (计数排序 && 基数排序)