作者 | 小灰
來源 | 程序員小灰(ID:chengxuyuanxiaohui)
在算法的世界里,有許多高效率的排序算法,比如快速排序、歸并排序、桶排序......它們大大提高了程序的性能。
但是,也有一些比較奇葩的排序算法,它們既不能做到高效率,也沒有很好的可讀性。那它們存在的意義是什么呢?因?yàn)橛腥ぱ健?/p>
下面,讓我們來介紹三種“異想天開”的排序算法。
睡眠排序
————— 第二天 —————
publicstaticvoidsleepSort( int[] array) {
for(intnum: array) {
newThread( - > {
try{
Thread.sleep(num);
} catch(InterruptedException e) {
e.printStackTrace;
}
System.out.println(num);
}).start;
}
}
publicstaticvoidmain(String[] args){
int[] array= {10,30,50,60,100,40,150,200,70};
sleepSort(array);
}
————————————
(小灰把自己的代碼給大黃展示了)
猴子排序
或許這樣說比較抽象,讓我們來演示一下:
珠排序
見過算盤的人都知道,算盤上有許多圓圓的珠子被串在細(xì)桿上,就像下面這樣:
如果把算盤豎起來,會(huì)發(fā)生什么呢?算盤上的小珠子會(huì)在重力的作用下滑到算盤底部,就像下面這樣:
什么意思呢?我們來仔細(xì)說明一下:
在珠子下落之前,每一橫排有幾個(gè)珠子?如上圖所示,每排珠子的數(shù)量分別是3, 2, 4, 5, 1,這個(gè)數(shù)列是無序的。
當(dāng)珠子下落以后,每一橫排有又幾個(gè)珠子?如上圖所示,每排珠子的數(shù)量變成了1, 2, 3, 4, 5,這個(gè)數(shù)列是有序的!
那么,我們可不可以模擬珠子下落的原理,對(duì)一組正整數(shù)進(jìn)行排序呢?答案是可以的。
我們可以用二維數(shù)組來模擬算盤,有珠子的位置設(shè)為1,沒有珠子的位置設(shè)為0。那么,一個(gè)無序的整型數(shù)組就可以轉(zhuǎn)化成下面的二維數(shù)組:
接下來,我們模擬算盤珠子掉落的過程,讓所有的元素1都落到二維數(shù)組的最底部:
最后,把掉落后的 “算盤” 轉(zhuǎn)化成一維有序數(shù)組:
?小網(wǎng)站的容器化(上)
?區(qū)塊鏈第一,情商上榜,2020找工作需要哪些技能?


