C 演算法 計數排序

2021-10-02 19:39:41 字數 735 閱讀 2194

計數排序,並非基數排序。暫時只支援數值型

編譯環境:c++11

**實現如下:

#include // std::memset

#include // std::declval

/* 計數排序

* [@beg, @end) 待排序的範圍,同時儲存結果,須支援前向迭代

* [@min, @max) 待排序範圍的最小值和最大值,不包含最大值

*/templatevoid csort(_forwarditer beg,

_forwarditer end,

typename std::remove_reference())>::type min,

typename std::remove_reference())>::type max)

__element_type *visit = ele;

for(long long i = 0; i < max; ++i, ++visit)

}delete ele;

}/* 計數排序

* [@beg, @end) 待排序的範圍,同時儲存結果,須支援前向迭代

*/templatevoid csort(_forwarditer beg,

_forwarditer end)

else if(*it < min)

}if(max != min)

}

如有問題,歡迎指出!

演算法 排序 計數排序

計數排序不是基於比較的排序演算法,其核心在於將輸入的資料值轉化為鍵儲存在額外開闢的陣列空間中。作為一種線性時間複雜度的排序,計數排序要求輸入的資料必須是有確定範圍的整數。計數排序 counting sort 是一種穩定的排序演算法。計數排序使用乙個額外的陣列c,其中第i個元素是待排序陣列a中值等於i...

演算法 排序 計數排序

計數排序的核心思想就是將需要排序的陣列的元素轉為下標,在輔助空間陣列 輔助空間陣列的初始都是0 中找到對應元素的下標位置,將該位置的元素 掃瞄下標,將對應不為0的下標記錄賦值給原陣列,然後對應下標元素 圖例分析 具體 includevoid countsort int a,int len int m...

計數排序演算法

countsort.c include include include typedef int datatype typedef char numtype 有效個數 2至127 2 sizeof numtype 8 1 1 define limit numtype 1 sizeof numtype ...