国产探花免费观看_亚洲丰满少妇自慰呻吟_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++桶排序詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 福清市| 永嘉县| 介休市| 罗山县| 青浦区| 沙坪坝区| 孟村| 沂源县| 宁武县| 寻乌县| 龙陵县| 德格县| 咸阳市| 恩施市| 米易县| 新蔡县| 济阳县| 闽清县| 红河县| 遂川县| 时尚| 孝昌县| 伊春市| 尖扎县| 宜都市| 游戏| 长乐市| 海口市| 扎囊县| 黎城县| 临沂市| 吴旗县| 若羌县| 乡宁县| 长垣县| 武安市| 宜宾县| 石嘴山市| 博罗县| 宁陕县| 盐源县|