最快最簡單的排序 「桶排序」

2021-07-12 02:54:15 字數 566 閱讀 3198

先來看乙個問題:有一列(0~10)隨機數 5 3 5 2 8 ,現在要求將它們按照從先到大的順序或從大到小的順序排列,如何去做?

在這裡可以需借助乙個一維陣列就可以解決這個問題,首先申請乙個大小為11 的陣列int a[11]編

號從a[0]~a[10]。剛開始的時候,將a[0]~a[10]都初始化為0,然後進行這一列隨機數的輸入,將每乙個數的數值對應到這個陣列所對應的序號的數值加一,即

依次陣列a的各個數值為:

接下來,需要將陣列中出現過的數值不是0的數列印出來就可以了,出現幾次就列印幾次。

具體**為:

#include

#define m 11

int main(void)

for(i=0;i<=10;i++) //依次判斷a[0]~a[10]

for(j=1;j<=a[i];j++) //出現了幾次就列印幾次

printf("%d ",i);

getchar();  //這裡的getchar();用來暫停程式,以便檢視程式輸出的內容

其實這並不是真正的桶排序演算法,真正的桶排序演算法要比這個更加複雜,期待以後的講解!

最快最簡單的排序 桶排序

我們學過很多的排序方法,氣泡排序 希爾排序 快速排序 今天我想說的是一種應用起來最快最簡單的排序 桶排序。當你隨機輸入幾個數,進行從小到大 從大到小 依次排序 你會有什麼方法?這裡只需乙個一維陣列即可。申請乙個長度為n的一維陣列。就相當於定義n個變數arr 0 arr n 1 剛開始都初始化為0,表...

最快最簡單的排序 桶排序

只需借助乙個一維陣列,對一組數進行簡單的桶排序。實現 初始化一維陣列 10個元素 每個元素對應的下標用來記錄 0 9 以內待排序數字出現的次數,如a 5 3,代表5數字出現了3次,a 2 0,代表2數字出現了0次 錄入要排序的一組數字,每乙個數字對應陣列下標,用該陣列元素記錄出現的次數 列印每個陣列...

最快最簡單的排序 桶排序

最快最簡單的排序 桶排序 在我們生活的這個世界中到處都是被排序過的。站隊的時候會按照身高排序,考試的名次需要按照分數排序,網上購物的時候會按照 排序,電子郵箱中的郵件按照時間排序 總之很多東西都需要排序,可以說排序是無處不在。現在我們舉個具體的例子來介紹一下排序演算法。首先出場的我們的主人公小哼,上...