CountingSort(计数排序)原理及C++代码实现
2024-10-08 20:02:44
计数排序是需要假设输入数据的排序之一,它假设输入元素是0到k区间内的一个整数,其中k为某个整数。当k=O(n)时,计数排序的时间复杂度为θ(n)。
因为不是通过比较来排序,所以它的时间复杂度可以达到θ(nlgn)以下。
计数排序是稳定的排序之一。
代码如下:(仅供参考)
//计数排序期望输入数据都是小区间内的整数
void CountingSort(int * const begin, int * const end) {
vector<int> temp(); //假设输入值小于10000
vector<int> out(end - begin); for (int i = ; i < end - begin; ++i)
++temp[*(begin + i)];
for (int i = ; i < ; ++i)
temp[i] += temp[i-];
for (int i = end - begin - ; i >= ; --i) {
out[temp[*(begin + i)] - ] = *(begin + i);
--temp[*(begin + i)];
}
for (int i = ; i < end - begin; ++i)
*(begin + i) = out[i];
}
最新文章
- [Asp.net 5] Options-配置文件之后的配置
- iOS Waxpatch项目(动态更新)
- CMD:在当前文件夹下打开cmd命令
- OpenStack部署工具总结
- Action中获取servletAPI对象的方法
- HTML5触屏版多线程渲染模板技术分享
- 安卓 开发 The connection to adb is down, and a severe error has occured.
- ES PES TS
- elisp语法
- BZOJ 2818GCD
- win7无法识别U盘,驱动信息:该设备的驱动程序未被安装。 (代码 28)
- java数据结构-非线性结构之树
- vs 自动生成core dump文件
- Vsftp配置都没有问题 连接不上 530 Login incorrect 解决方法
- 安卓和iOS移动APP开发设计应该考虑哪些问题
- [0] 错误1“GenerateResource”任务意外失败。....
- require.js详解
- Java工程师的终极书单
- [补档]Cube
- FFmpeg: FFmepg中的sws_scale() 函数分析