计数排序是须要假设输入数据的排序之一,它假设输入元素是0到k区间内的一个整数,其中k为某个整数。当k=O(n)时,计数排序的时间复杂度为θ(n)。spa
由于不是经过比较来排序,因此它的时间复杂度能够达到θ(nlgn)如下。code
计数排序是稳定的排序之一。blog
代码以下:(仅供参考)排序
//计数排序指望输入数据都是小区间内的整数 void CountingSort(int * const begin, int * const end) { vector<int> temp(10000); //假设输入值小于10000 vector<int> out(end - begin); for (int i = 0; i < end - begin; ++i) ++temp[*(begin + i)]; for (int i = 1; i < 10000; ++i) temp[i] += temp[i-1]; for (int i = end - begin - 1; i >= 0; --i) { out[temp[*(begin + i)] - 1] = *(begin + i); --temp[*(begin + i)]; } for (int i = 0; i < end - begin; ++i) *(begin + i) = out[i]; }