码迷,mamicode.com
首页 > 编程语言 > 详细

珠排序Bead Sort

时间:2017-03-09 22:40:20      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:数字   概念   idt   分享   http   tle   最大数   search   ima   

珠排序非常另类[地精也很另类],看完你就知道了,先介绍思路,再分解过程

这是它的英文论文 http://www.cs.auckland.ac.nz/~jaru003/research/publications/journals/beadsort.pdf

截图即从上边的论文里抓的屏

先了解一个概念,不然不容易理解,一个数字3用3个1来表示

一个数字9用9个1来表示,珠排序中的珠指的是每一个1,它把每一个1想像成一个珠子,这些珠子被串在一起,想像下算盘和糖葫芦

技术分享

图1

上图1中的三个珠就表示数字3,两个珠表示数字2,这个OK了继续,这里的3和2都叫bead

技术分享

图2

图2(a)中有两个数字,4和3,分别串在四条线上,于是数字4的最后一个珠子下落,因为它下边是空的,自由下落后变成图2(b)

图2(c)中随机给了四个数字,分别是3,2,4,2,这些珠子自由下落,就变成了(d)中,落完就有序了,2,2,3,4

以上就是珠排序的精华

技术分享

图3

上图3中的n表示待排序数组的长度,有多少数字就有多少层,横向表示一层

m表示有多少个珠子,就是多少个1,这取决于最大数是几

比如待排数组[6 2 4 1 5 9]

技术分享

让珠子全部做自由落体运动

9没有什么好落的,它在最底层

5也没有什么好落的,全部有支撑点

1同样不需要滑落

4除了第一个珠子不动外,其它三颗全部下落,落到1的位置变成下边这样

技术分享

过程的细节不画了,原则就是你下边有支点,你就不用再滑落了,最后变成下边这样,排序完毕

技术分享

从上到下顺序输出即可得到结果:[ 1 2 4 5 6 9]

珠排序Bead Sort

标签:数字   概念   idt   分享   http   tle   最大数   search   ima   

原文地址:http://www.cnblogs.com/jxhd1/p/6528103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!