漫畫:三種 “奇葩” 的排序演算法

視學演算法發表於2020-04-06

轉載自微信公眾號:程式設計師小灰

在演算法的世界裡,有許多高效率的排序演算法,比如快速排序、歸併排序、桶排序......它們大大提高了程式的效能。

但是,也有一些比較奇葩的排序演算法,它們既不能做到高效率,也沒有很好的可讀性。那它們存在的意義是什麼呢?因為有趣呀。

下面,讓我們來介紹三種“異想天開”的排序演算法。

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);
}

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

  1. }

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

————————————

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

(小灰把自己的程式碼給大黃展示了)

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

2.猴子排序

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

或許這樣說比較抽象,讓我們來演示一下:

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

3.珠排序

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

見過算盤的人都知道,算盤上有許多圓圓的珠子被串在細杆上,就像下面這樣:

漫畫:三種 “奇葩” 的排序演算法

如果把算盤豎起來,會發生什麼呢?算盤上的小珠子會在重力的作用下滑到算盤底部,就像下面這樣:

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

什麼意思呢?我們來仔細說明一下:

漫畫:三種 “奇葩” 的排序演算法

在珠子下落之前,每一橫排有幾個珠子?如上圖所示,每排珠子的數量分別是3, 2, 4, 5, 1,這個數列是無序的。

漫畫:三種 “奇葩” 的排序演算法

當珠子下落以後,每一橫排有又幾個珠子?如上圖所示,每排珠子的數量變成了1, 2, 3, 4, 5,這個數列是有序的!

那麼,我們可不可以模擬珠子下落的原理,對一組正整數進行排序呢?答案是可以的。

我們可以用二維陣列來模擬算盤,有珠子的位置設為1,沒有珠子的位置設為0。那麼,一個無序的整型陣列就可以轉化成下面的二維陣列:

漫畫:三種 “奇葩” 的排序演算法

接下來,我們模擬算盤珠子掉落的過程,讓所有的元素1都落到二維陣列的最底部:

漫畫:三種 “奇葩” 的排序演算法

最後,把掉落後的 “算盤” 轉化成一維有序陣列:

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

轉載自微信公眾號:程式設計師小灰

- END -

如果看到這裡,說明你喜歡這篇文章,請轉發、點贊掃描下方二維碼或者微信搜尋「perfect_iscas」,新增好友後即可獲得10套程式設計師全棧課程+1000套PPT和簡歷模板向我私聊「進群」二字即可進入高質量交流群。

掃描二維碼進群↓

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

漫畫:三種 “奇葩” 的排序演算法

在看 漫畫:三種 “奇葩” 的排序演算法

相關文章