首頁> 後端開發> C++> 主體

如何使用C++中的計數排序演算法

WBOY
發布: 2023-09-20 15:18:11
原創
1194 人瀏覽過

如何使用C++中的計數排序演算法

如何使用C 中的計數排序演算法

計數排序演算法是一種比較簡單且高效的排序演算法,適用於對整數序列進行排序的場景。它的基本思想是確定每個元素前面有多少個元素比它小,從而確定它在有序數組中的位置。

計數排序演算法的步驟如下:

  1. 找出待排序數組中的最大值,以決定計數數組的長度。
  2. 建立一個長度為最大值加一的計數數組,並初始化為0。
  3. 遍歷待排序數組,統計每個元素的出現次數,並將統計結果儲存到計數數組。
  4. 對計數數組進行變形,使得每個位置的值等於它前面位置值總和。
  5. 建立一個與待排序數組等長的臨時數組,用於保存排序結果。
  6. 從後向前遍歷待排序數組,根據計數數組確定每個元素在排序結果中的位置,並將元素儲存到臨時數組中。
  7. 將臨時數組的結果複製回待排序數組,完成排序。

下面是一個使用C 語言實現的計數排序演算法的範例程式碼:

#include  #include  using namespace std; void countingSort(vector& arr) { int max_val = arr[0]; for (int i = 1; i < arr.size(); i++) { if (arr[i] > max_val) { max_val = arr[i]; } } vector count(max_val + 1, 0); for (int i = 0; i < arr.size(); i++) { count[arr[i]]++; } for (int i = 1; i < count.size(); i++) { count[i] += count[i - 1]; } vector temp(arr.size()); for (int i = arr.size() - 1; i >= 0; i--) { temp[count[arr[i]] - 1] = arr[i]; count[arr[i]]--; } for (int i = 0; i < arr.size(); i++) { arr[i] = temp[i]; } } int main() { vector arr = {5, 1, 4, 3, 2}; countingSort(arr); cout << "排序后的数组:"; for (int i = 0; i < arr.size(); i++) { cout << arr[i] << " "; } cout << endl; return 0; }
登入後複製

以上程式碼中,我們使用了一個輔助的計數數組來統計每個元素的出現次數,然後透過變形計算每個元素在排序結果中的位置。最後,我們將排序結果複製回原數組。

透過上述範例程式碼,我們可以看到計數排序演算法的實作過程,它的時間複雜度為O(n k),其中n為待排序序列的長度,k為最大元素值與最小元素值之差加一。

總結起來,計數排序演算法是一種簡單但高效的排序演算法,適用於對整數序列進行排序的場景。透過使用適當的資料結構和演算法,我們可以更好地完成排序任務。

以上是如何使用C++中的計數排序演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!