簡單的排序演算法 桶排序 簡易版

2021-09-24 09:10:53 字數 921 閱讀 6402

《啊哈!演算法》筆記

桶排序顧名思義,像是用有順序的桶子一樣的東西來裝東西排序。

那麼來舉個例子:

我現在有5個分數3,1,2,4,3(滿分5分)這五個分數需要按從小到大來排個序12334,我們用桶排序該怎麼排呢?

**如下:

#includeint main()

; //定義木桶並初始化,因為我們要在012345個分數中排序所以要定義6個桶。

int i,j,t,n;

scanf("%d",&n); //輸入乙個數n+1,表示接下來有n個數要排序

for(i=1;i在第七行中這個迴圈中將我們每乙個分數放入了相對應的桶中。

在第十二行和十三行迴圈裡我們將分數列印出來,就像題目一樣31243,有兩個3,在經過了第七行的buc[t]++,第一次給buc[3]++了一次,最後一次也是錄入了乙個3,所以buc[3]繼續加1,所以buc[3]累加了兩次。

就是把分數3放到了對應的三號桶裡,最後看看三號桶裡有幾個分數3,在按照順序迴圈輸出。

時間複雜度的問題,第七行迴圈了m次,在十二和十三行中迴圈了m+n次,所以整個排序演算法一共執行了m+n+m+n次。

我們用大寫字母o表示時間複雜度,所以此演算法的時間複雜度為o(2*(m+n),我們在說時間複雜度的時候可以忽略較小的常數,最終也就是o(m+n)。

再說說自己的理解,我認為在陣列的項數和所要排序內容有相似之處時可以用這種排序法,利用陣列固定的項數記錄並依次排序輸出,就沒有那麼複雜。

這種排序還不算是真正意義上的桶排序,真正的桶排序演算法比這個更為複雜。

這是我第一次寫部落格,剛看完書,自己總結的一遍,**是借鑑的是書上的並做了些改動。

如果有什麼誤解或者錯誤請大佬指正。

Python實現簡易版「桶排序」演算法

coding utf 8 簡易版桶排序演算法 import random fenshu int input 請輸入考試滿分 renshu int input 請輸入考試人數 sortsre input 倒敘 正序 請選擇 y n while sortsre y and sortsre n print...

演算法 簡易桶排序

前提說明 這只是本果初次接觸演算法,而且僅僅是桶排序的簡易模型,前輩們請繞道,感謝!簡介 實現思想 假如此時要對5個整數進行排序,而且數字的範圍已知的話,就可以使用桶排序啦。我們先假設數字範圍是1000以內吧,此時我們就要準備1001個桶,來存放這5個數字。為什麼是1001個桶呢,因為代表0 100...

八種排序演算法(C語言簡易版)

排序,從小到大接觸最多的事件,班級排名,學校排名 在程式中,排序的思路很多,優先列出如下演算法 include include 巨集定義 maxd暫定100 define maxd 100 定義關鍵字 型別為int typedef int keytype 其他資料項,型別暫定int typedef ...