最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C++ 桶排序(BucketSort)

 更新時間:2019年04月08日 14:21:27   作者:ChanJose  
這篇文章主要介紹了C++桶排序,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

 一、思路

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

二、實現(xiàn)程序:

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

 測試結(jié)果:

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

相關(guān)文章

  • VisualStudio2019構(gòu)建C/C++靜態(tài)庫和動態(tài)庫dll的問題 附源碼

    VisualStudio2019構(gòu)建C/C++靜態(tài)庫和動態(tài)庫dll的問題 附源碼

    這篇文章主要介紹了VisualStudio2019構(gòu)建C/C++靜態(tài)庫和動態(tài)庫(dll)(文末附源碼),本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • C++可變參數(shù)的函數(shù)與模板實例分析

    C++可變參數(shù)的函數(shù)與模板實例分析

    這篇文章主要介紹了C++可變參數(shù)的函數(shù)與模板,非常重要的概念,需要的朋友可以參考下
    2014-08-08
  • C語言計算余數(shù)的圖文步驟

    C語言計算余數(shù)的圖文步驟

    在本篇文章里小編給大家整理了一篇關(guān)于C語言計算余數(shù)的圖文步驟內(nèi)容,有需要的朋友們可以參考下。
    2020-02-02
  • opencv實現(xiàn)圖像顏色空間轉(zhuǎn)換

    opencv實現(xiàn)圖像顏色空間轉(zhuǎn)換

    這篇文章主要為大家詳細介紹了opencv實現(xiàn)圖像顏色空間轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • c++實現(xiàn)reactor高并發(fā)服務(wù)器的詳細教程

    c++實現(xiàn)reactor高并發(fā)服務(wù)器的詳細教程

    這篇文章主要介紹了c++從零實現(xiàn)reactor高并發(fā)服務(wù)器,包括環(huán)境準(zhǔn)備和基礎(chǔ)知識介紹,本文給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • C++ const限定符以及頂層const和底層const的案例詳解

    C++ const限定符以及頂層const和底層const的案例詳解

    這篇文章主要介紹了C++ const限定符以及頂層const和底層const的案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C語言中if語句加大括號和不加大括號的區(qū)別介紹

    C語言中if語句加大括號和不加大括號的區(qū)別介紹

    這篇文章主要給大家介紹了關(guān)于C語言中if語句加大括號和不加大括號的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++成員函數(shù)后面加override問題

    C++成員函數(shù)后面加override問題

    這篇文章主要介紹了C++成員函數(shù)后面加override問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Qt之使用GraphicsView框架實現(xiàn)思維導(dǎo)圖的示例

    Qt之使用GraphicsView框架實現(xiàn)思維導(dǎo)圖的示例

    思維導(dǎo)圖可以更方便的整理知識,本文主要介紹了Qt之使用GraphicsView框架實現(xiàn)思維導(dǎo)圖的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C++將模板實現(xiàn)放入頭文件原理解析

    C++將模板實現(xiàn)放入頭文件原理解析

    這篇文章主要為大家介紹了C++將模板實現(xiàn)放入頭文件原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論

新营市| 屏南县| 高碑店市| 海盐县| 拜泉县| 伊吾县| 兰考县| 卢氏县| 丰宁| 垣曲县| 绥芬河市| 宜黄县| 恩平市| 五家渠市| 土默特左旗| 枞阳县| 巢湖市| 浑源县| 平顺县| 泌阳县| 沙湾县| 喜德县| 浦江县| 乌海市| 庆城县| 建德市| 阿拉善盟| 恩平市| 湛江市| 大方县| 金山区| 灵石县| 晴隆县| 徐水县| 梅河口市| 虎林市| 涡阳县| 嵊泗县| 离岛区| 湄潭县| 辽源市|