漫畫:三種 “奇葩” 的排序演算法
轉載自微信公眾號:程式設計師小灰
在演算法的世界裡,有許多高效率的排序演算法,比如快速排序、歸併排序、桶排序......它們大大提高了程式的效能。
但是,也有一些比較奇葩的排序演算法,它們既不能做到高效率,也沒有很好的可讀性。那它們存在的意義是什麼呢?因為有趣呀。
下面,讓我們來介紹三種“異想天開”的排序演算法。
1.睡眠排序
————— 第二天 —————
public static void sleepSort(int[] array){
for (int num : array) {
new Thread(() -> {
try {
Thread.sleep(num);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(num);
}).start();
}
}
public static void main(String[] args) {
int[] array = {10,30,50,60,100,40,150,200,70};
sleepSort(array);
}
}
————————————
(小灰把自己的程式碼給大黃展示了)
2.猴子排序
或許這樣說比較抽象,讓我們來演示一下:
3.珠排序
見過算盤的人都知道,算盤上有許多圓圓的珠子被串在細杆上,就像下面這樣:
如果把算盤豎起來,會發生什麼呢?算盤上的小珠子會在重力的作用下滑到算盤底部,就像下面這樣:
什麼意思呢?我們來仔細說明一下:
在珠子下落之前,每一橫排有幾個珠子?如上圖所示,每排珠子的數量分別是3, 2, 4, 5, 1,這個數列是無序的。
當珠子下落以後,每一橫排有又幾個珠子?如上圖所示,每排珠子的數量變成了1, 2, 3, 4, 5,這個數列是有序的!
那麼,我們可不可以模擬珠子下落的原理,對一組正整數進行排序呢?答案是可以的。
我們可以用二維陣列來模擬算盤,有珠子的位置設為1,沒有珠子的位置設為0。那麼,一個無序的整型陣列就可以轉化成下面的二維陣列:
接下來,我們模擬算盤珠子掉落的過程,讓所有的元素1都落到二維陣列的最底部:
最後,把掉落後的 “算盤” 轉化成一維有序陣列:
轉載自微信公眾號:程式設計師小灰
- END -
如果看到這裡,說明你喜歡這篇文章,請轉發、點贊。掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板,向我私聊「進群」二字即可進入高質量交流群。
↓掃描二維碼進群↓
喜歡文章,點個在看
相關文章
- 齊姐漫畫:排序演算法(一)排序演算法
- 漫畫演算法:無序陣列排序後的最大相鄰差值演算法陣列排序
- 漫畫:什麼是氣泡排序?排序
- 漫畫:什麼是計數排序?排序
- 三種快速排序演算法以及快速排序的優化排序演算法優化
- 漫畫:各種程式語言的困境
- 【漫畫】不要再問我快速排序了排序
- 漫畫演算法:最小棧的實現演算法
- 漫畫:10種極品求職者求職
- 三種高階比較排序演算法排序演算法
- 關於程式設計師的漫畫(三)程式設計師
- 漫畫:什麼是LRU演算法?演算法
- 漫畫演算法筆記 最小棧演算法筆記
- 畫江湖之演算法篇【排序演算法】快速排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 快速排序演算法排序
- 三種快速排序排序
- 腐漫網,腐女漫畫網,漫畫網站網站
- 畫江湖之演算法篇【排序演算法】氣泡排序演算法排序
- 畫江湖之演算法篇【排序演算法】選擇排序演算法排序
- 畫江湖之演算法篇【排序演算法】插入排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 氣泡排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 選擇排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 插入排序演算法排序
- 漫畫演算法:什麼是 B 樹?演算法
- 常見的三種排序演算法(選擇,冒泡,計數)排序演算法
- 漫畫:7種程式語言的學習曲線
- O(lgn)的三種排序,快速排序、歸併排序、堆排序排序
- 聊一聊那些腦洞大開、有趣又奇葩的排序演算法排序演算法
- 排序演算法(三)排序演算法
- Go 中的三種排序方法Go排序
- 幾種常用的排序演算法排序演算法
- 三種快速排序法排序
- 最簡單易懂的三種排序演算法:冒泡、選擇、插入排序演算法
- 7種排序演算法排序演算法
- 8種排序演算法排序演算法
- 漫畫演算法:什麼是跳躍表?演算法
- 【漫畫】為什麼說O(n)複雜度的基數排序沒有快速排序快?複雜度排序
- Java中三種常用的排序方法Java排序