国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

詳解C++ 桶排序(BucketSort)

2020-01-26 13:29:05
字體:
來源:轉載
供稿:網友

 一、思路

是將[0,1]區間劃分為n個等長的子區間。然后,將各個元素按照自己所屬的區間放入相應的桶中,只需要將每個桶的元素排好序,依次輸出各個桶內的元素,就得到了有序的元素序列。

二、實現程序:

#include <iostream>using namespace std; const int offset = 105; // 為桶的邊界const int maxSize = 100; // 數組的最大存儲范圍 // 桶排序template <typename T>void BucketSort(T arr[], int n);// 輸出數組template <typename T>void Print(T arr[], int n); int main(int argc, const char * argv[]) {    int n, i, arr[maxSize];        cout << "請輸入要排序的數的個數:";    cin >> n;    srand((int)time(NULL)); // 設置時間為隨機點    for(i = 0; i < n; i++) // 產生n個隨機數        arr[i] = rand() % 100;    cout << "排序前:";    Print(arr, n);    BucketSort(arr, n); // 調用桶排序    std::cout << "排序后:";    Print(arr, n);    return 0;} template <typename T>void BucketSort(T arr[], int n) {    int i, j;    T buckets[offset];        for(i = 0; i < offset; i++) // 清零        buckets[i] = 0;    // 1.計數,將數組arr中的元素放到桶中    for(i = 0; i < n; i++)        buckets[arr[i]]++; // 將arr[i]的值對應buckets數組的下標,每有一個就加1    // 2.排序    for(i = 0, j = 0; i < offset; i++) {        while(buckets[i] > 0) { // 說明存有元素,相同的整數,要重復輸出            arr[j] = i;            buckets[i]--;            j++;        }    }} // 輸出數組template <typename T>void Print(T arr[], int n) {    int i;        for(i = 0; i < n; i++)        cout << arr[i] << " ";    cout << endl;}

 測試結果:

以上所述是小編給大家介紹的C++桶排序詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 迭部县| 亳州市| 武强县| 灵武市| 泽库县| 仙桃市| 南澳县| 鄱阳县| 龙里县| 山西省| 平罗县| 新安县| 二连浩特市| 青河县| 隆昌县| 乐山市| 海城市| 屯昌县| 永清县| 阳新县| 石嘴山市| 渭南市| 绍兴市| 上犹县| 六枝特区| 合水县| 和硕县| 定结县| 汶川县| 新津县| 苏尼特右旗| 九台市| 喜德县| 桐庐县| 搜索| 西丰县| 农安县| 肇东市| 南京市| 兰坪| 旬邑县|