第一次聽着幾個的時候,感覺就是老哥你是來鬧的嗎
后來仔細看了一下 我靠 天才啊,好吧 其實也就是聽着挺好的 但是實際應用的話 還是挺多坑的
一、睡眠排序
public class SleepSort { public static void main(String[] args) { int[] ints = {1,4,7,3,8,9,2,6,5}; SortThread[] sortThreads = new SortThread[ints.length]; for (int i = 0; i < sortThreads.length; i++) { sortThreads[i] = new SortThread(ints[i]); } for (int i = 0; i < sortThreads.length; i++) { sortThreads[i].start(); } } } class SortThread extends Thread{ int ms = 0; public SortThread(int ms){ this.ms = ms; } public void run(){ try { sleep(ms*10+10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(ms); } }
二、面條排序
首先去買一捆面,是意面掛面還是手擀面請按個人口味決定,最好是硬的。找到數組中最大和最小的兩個數(O(n)),讓最大的數對應一根很長的面條,最小的數對應一根很短的面條。重新遍歷數組,每遇到一個數,就取一根面條,把它切成這個數對應的長度,可以得到n根面條。這里的數與面條長度的對應可以用一個嚴格遞增的函數來映射。接下來,一手握住這n根面條,稍微用力,別握太緊,在平放的桌面上直立着放下,讓所有的面條底端接觸到桌面。另一只手平行於桌面,從面條上方緩慢往下移動,每當這只手碰到一根面條,移走它,並把對應的數輸出到結果數組中,直到移走全部面條。
用完的面條還可以煮夜宵哦。
面條排序的思想基本上跟睡眠排序一樣樣的,代碼不造咋寫...
用完的面條還可以煮夜宵哦。
面條排序的思想基本上跟睡眠排序一樣樣的,代碼不造咋寫...
三、猴子排序
隨機打亂數組,檢查是否排好序,若是,則輸出,否則再次打亂,再檢查...最佳情況O(n),平均O(n*n!),最壞可執行直到世界的盡頭。
while(! isOrdered(nums)) shuffle(nums);