首页 > 编程知识 正文

c++桶排序,桶排序算法流程图

时间:2023-05-06 05:20:49 阅读:141718 作者:4157

前摆桶排序(Bucket sort )和所谓的箱子排序是一种排序算法,原理是将数组分成有限数量的桶。 对每个桶分别排序。 您可以使用其他排序算法,也可以继续使用桶排序递归排序。 桶排序是鸽巢排序的总结结果。 如果要排序的数组中的数值是均匀分配的,则桶排序使用线性时间((n ) )。 但是,桶排序不是比较排序,不受o(nlogn )下限的影响。

源代码Sim_buck_sort.c

#includestdio.hintmain(void ) ) { int a[11],I,j,t; for(I=0; i=10; I ) a(I )=0; //initializeto0for(I=1; i=5; I//loopin5numbers{scanf('%d ',t ); //readeachofthesenumbersintovariableta [ t ]; //tocount}for(I=0; i=10; I//a[0]~a[10]for(j=1; j=a[i]; j//itappearsafewtimesandprintsafewtimesprintf (' % d ',I ); 打印((n ); getchar (; //pausetheprogramtoseewhattheprogramoutputsgetchar (; 返回0; )假设需要对5个同学的成绩进行排名,分数为0~10。

程序必须创建数组,大小为11。 其下标分别表示0~10的11个个数。 在for循环中输入5个个数,计数对应的数组元素即可完成排序。

最后一个输出根据数组元素的值打印分数。 每个数组元素的值表示有多少这样的分数。 例如,下标为0的数组值为3时依次输出0 3次,下标为8的数组值为5时依次输出8 5次……。

Sim_buck_sort2.c

# include stdio.hint main ((intbook [ 1001 ],I,j,t,n; for(I=0; i=1000; I ) book[i]=0; scanf('%d ',n ); //thatmeanswehavennumbersfor (I=1; i=n; I//loopthroughnnumbersandsort { scanf (' % d ',t ); 书[ t ]; //tocount}for(I=1000; i=0; I---//judgethedrumsnumbered 1000至0 insequencefor (j=1; j=book[i]; j//itappearsafewtimesandprintsafewtimesprintf (' % d ',I ); 打印((n ); getchar (; getchar (; 返回0; }如果需要排序的最大值为1000,则数组大小必须为0到1000 (10001)。

n表示需要排序的数量,这n个将按顺序计数对应的数组元素。 最后把这些数从大到小输出。

总结该算法的时间复杂度为O(M N )。 这是一种非常快速的排序算法。 但是,那是非常浪费的空间。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。