欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言基本排序算法之桶式排序實例

 更新時間:2017年09月27日 10:41:54   作者:liyuxia713  
這篇文章主要介紹了C語言基本排序算法之桶式排序,簡單說明了桶式排序的原理并結合具體實例給出了C語言實現(xiàn)桶式排序算法的具體步驟與相關操作技巧,需要的朋友可以參考下

本文實例講述了C語言基本排序算法之桶式排序。分享給大家供大家參考,具體如下:

桶式排序是對一個有n個整型元素的數(shù)組a[n],其中對任意i,0 <= a[i] <= m的特殊排序算法。

可以對 n==m, n != m分別處理。寫代碼時需要注意的的是a[i]是訪問第i-1個元素,而非第i個。

/************************************************************************************/
/* Bucket_Sort.h 桶式排序算法 */
/* 問題:對一個有n個整型元素a[0],a[1],…,a[n-1]的數(shù)組排序,其中0 <= a[i] <= m,任意i */
/* 程序:運行時間為O(m+n),輔助空間為O(m) */
/* 當 n=m 時特殊處理,運行時間為O(N), 輔助空間為O(1) */
/************************************************************************************/
#include <vector>
/*m != n */
void Bucket_Sort_m(int *a, int n, int m)
{
  std::vector<int> temp(m,0);
  int i;
  for(i = 0; i != n; ++i) //遍歷a[]
    ++temp[a[i]-1]; //如果有對應于下標的值,標記為1,否則為0
  i = 0;
  for(int j = 1; j <= m; ++j) //遍歷temp向量
    if(temp[j-1]) a[i++] = j;
  temp.clear();
}
/* m == n */
/* 最后的結果是a[i-1] = i */
void Bucket_Sort(int *a,int n)
{
  for(int i = 1; i <= n; ++i)
  {
    while(a[i-1] != i)
    {
       int temp = a[a[i-1]-1];
       a[a[i-1]-1] = a[i-1];
       a[i-1] = temp;
    }
    /* 偽代碼:如果假設可以通過a[i]訪問數(shù)組的第i個元素,而不是第i-1個 */
    /*while(a[i] != i)
    {
       int temp = a[a[i]];
       a[a[i]] = a[i];
       a[i] = temp;
    }
    */
  }
}

希望本文所述對大家C語言程序設計有所幫助。

相關文章

  • 淺談關于指針作為參數(shù)并改變它的值的問題

    淺談關于指針作為參數(shù)并改變它的值的問題

    這篇文章介紹了關于指針作為參數(shù)并改變它的值的問題,有需要的朋友可以參考一下
    2013-10-10
  • C語言實現(xiàn)在數(shù)組A上有序合并數(shù)組B的方法

    C語言實現(xiàn)在數(shù)組A上有序合并數(shù)組B的方法

    這篇文章主要介紹了C語言實現(xiàn)在數(shù)組A上有序合并數(shù)組B的方法,包含了數(shù)組操作的完整實現(xiàn)過程以及相應的代碼分析與改進,具有不錯的借鑒價值,需要的朋友可以參考下
    2014-09-09
  • VisualStudio2022配置opencv的實現(xiàn)

    VisualStudio2022配置opencv的實現(xiàn)

    本文主要介紹了VisualStudio2022配置opencv的實現(xiàn),文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-06-06
  • C語言排序算法之插入排序

    C語言排序算法之插入排序

    這篇文章主要為大家詳細介紹了C語言排序算法之插入排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++如何將十六進制字符串轉換為二進制字符串

    C++如何將十六進制字符串轉換為二進制字符串

    這篇文章主要介紹了C++如何將十六進制字符串轉換為二進制字符串問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • DSP中浮點轉定點運算--定點數(shù)模擬浮點數(shù)運算及常見的策略

    DSP中浮點轉定點運算--定點數(shù)模擬浮點數(shù)運算及常見的策略

    本文主要講解DSP中定點數(shù)模擬浮點數(shù)運算及常見的策略,具有參考價值,需要的朋友可以參考一下。
    2016-06-06
  • C++空類詳解

    C++空類詳解

    以下是對C++中的空類進行了詳細的介紹,需要的朋友可以過來參考下
    2013-09-09
  • C語言strlen函數(shù)全方位講解

    C語言strlen函數(shù)全方位講解

    在C語言中我們要獲取字符串的長度,可以使用strlen函數(shù),strlen函數(shù)計算字符串的長度時,直到空結束字符,但不包括空結束字符,因為 strlen函數(shù)時不包含最后的結束字符的,因此一般使用strlen函數(shù)計算的字符串的長度會比使用sizeof計算的字符串的字節(jié)數(shù)要小
    2022-09-09
  • bloom filter概念講解以及代碼分析

    bloom filter概念講解以及代碼分析

    Bloom filter 優(yōu)點就是它的插入和查詢時間都是常數(shù),另外它查詢元素卻不保存元素本身,具有良好的安全性
    2013-09-09
  • c++ 讀寫yaml配置文件

    c++ 讀寫yaml配置文件

    YAML所表示的YAML Ain’t Markup Language,YAML 是一種簡潔的非標記語言,這篇文章主要介紹了在C語言開發(fā)中如何讀寫配置yaml配置文件,感興趣的同學可以參考一下
    2023-04-04

最新評論