演算法初步——桶排序

桶排序實際上是將對應數字出現的次數存儲在一個一維數組的對應位置,將所有數字放在對應的桶里之後,再從桶里按其對應出現的次數將數據拿出。

ps:這裡介紹的桶排序演算法並不是真正意義上的桶排序,真正的桶排序比這要複雜的多,我們以後介紹。

#include<iostream>
using namespace std;

int a[11], t;
int main()
{
    for (int i = 0; i < 11; i++)
        a[i] = 0;                    //將桶里的數字初始化為0,表示此時該數字出現0次
    for (int i = 0; i < 5; i++)        //循環讀入5個數字
    {
        cin >> t;                    //先將數字賦值給變數t
        a[t]++;                        //進行計數
    }

    //接下來是從桶中拿出數據的過程
    for (int i = 0; i < 11; i++)
    {
        for (int j = 0; j <= a[i]; j++)
            cout << i << ' ';
    }
    cout << endl;
    return 0;
}

 以上是按從小到大的順序進行排序的,如要從大到小進行排序,只需要將for(int i=0;i<11;i++)改為for(int i=10;i>=0;i–)

這個演算法就好比有11個桶,標號0~10。每出現一個數,就在其對應的桶里插入一個旗子,最後只要數一數每個桶中的旗子數即可。例如2號桶中有1個旗子,表示2出現了一次,以此類推。