C語言實現排序演算法 桶 箱 排序

2021-08-12 00:10:25 字數 847 閱讀 2186

桶排序(bucketsort)也叫箱排序。顧名思義,我們在排序的時候,需要用到「桶」或者「箱子」這樣的東西來存放元素。

當然,正如你所料,在程式設計工作中,我們一般用陣列來存放這些東西。

那麼現在問題來了,我們應該如何使用這些箱子呢。首先,我們需要按照特性給這些箱子分一下類:現在假如我要給100個1000以內的資料排序。那麼我們需要10個桶,並編號0~9,因為我們觀察會發現,這些資料無非就是0~9組成的。而剛好陣列能很好的解決這一問題,比如:int arr[10][length],下標0~9剛好分別代表了這10個桶。

可是說好10個「

桶」,為什麼定義的是乙個二維陣列呢?0~9只能解決編號的問題,而作為「桶」是需要裝東西的,所以我們需要的是乙個二維陣列。length代表的是待排序陣列的個數,因為我們需要考慮極端情況,如果這些元素都是乙個特性的,那麼乙個「桶」就必須要保證能全部容納的下才行。

那麼,我們排序的這個特性到底是什麼呢?其實桶排序就是先給個位數相同的裝進乙個「桶」,然後還原,再給十位數相同的裝進乙個「桶」...一次類推。

下面附上一張圖:

另外一點值得注意的就是:每次給資料分類時都必須要把「桶」清空一下才行,也就是圖上的42~47行。

桶排序是典型的以空間換時間的一種排序演算法。

下面是完成的原始碼:

希望大家能有所收穫,也歡迎指正!

排序演算法(C語言實現)

本文共介紹了7種排序演算法 參考文章 1.1 基本思想 依次向後兩兩相鄰比較,大的向後移 1.2 示例 void bubblesort int a,int n 2.1 基本思想 從無序佇列中選擇最小值,放置到有序佇列的末尾 2.2 示例 void selectsort int a,int n a j...

排序演算法 氣泡排序 C語言實現

氣泡排序介紹 氣泡排序 bubble sort 又稱為氣泡排序。這是一種較簡單的排序演算法。它會遍歷若干次要排序的陣列,每次遍歷時,它都會從前往後依次比較相鄰兩個數的大小 如果前者大於後者,則兩者位置互換。由此,一次遍歷後,最大元素就在數列末尾。採用相同方法再次遍歷時,第二大的元素就被排列在最大元素...

排序 桶排序演算法實現

演算法名桶排序 分類排序演算法 複雜度線性 消耗儲存空間較大 實現形式 單鏈表特性 原址排序 具體參考出處 演算法導論 bucket sort.cpp 定義控制台應用程式的入口點。include stdafx.h include include include define data num 100...