假設班上有5個同學,這學期期末考試,這5個同學分別考了5分、3分、5分、2分、8分,滿分是10分。接下來將分數從大到小排序,排序後是8 5 5 3 2。
//**【簡單桶排序】**//
void ******barrelsort()
for (i = 1; i <= 5; ++i)
//從大到小輸出
for (i = 10; i >= 0; --i)
}printf("\n");
//從小到大輸出
for (i = 0; i < 11; ++i) }}
時間複雜度o(m+n).
這個演算法非常浪費記憶體空間。
這個演算法就好比有11個桶,編號從 0~10 。每出現乙個數,就在對應的編號的桶中放乙個小旗子,最後只要數數每個桶中有幾個小旗子就行了。例如 2號桶中有 1 個小旗子,表示 2 出現了一次;3號桶中有個 1 個小旗子,表示 3 出現了一次; 5號桶中有 2 個小旗子,表示 5 出現了兩次; 8號桶中有 1 個小旗子,表示 8 出現了一次。
參考啊哈磊的《啊哈!演算法》一書。
演算法筆記 桶排序
今天做leetcode 164最大間距的時候,看到這種具有線性時間複雜度的排序方法。第一次看這個演算法,真是驚掉了下巴,排序演算法還真是博大精深啊,之前我的部落格也總結了不少排序演算法,自認為對排序也算是略懂一點,沒想到還是不斷有經典常用的排序演算法重新整理我對排序演算法的認識。桶排序,簡單來說,就...
桶排序(最簡單的排序演算法)
桶排序的基本思想 將乙個資料表分割成許多buckets,然後每個bucket各自排序,或者用不同的排序演算法,遞迴的 使用bucket sort 演算法,也是一種典型的divide and conquer分而治之的策略,它是一種分布式的排序,介於msd基數排序和lsd基數排序之間 def bucke...
簡單桶排序
2020年即將過去,2021年即將到來。讓我們總結過去並且憧憬2021 希望大家在2021年理論與實際相結合 以下是簡單桶排序 題目 滿分十分有五個同學依次考5分,9分,1分,6分,5分,7分。把以上同學按照非遞減排序 使用簡單同排序 1 申請處理資料上限數字的桶數 對應下面程式中n 2 對申請的桶...