千家信息网

C++中如何实现计数排序

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"C++中如何实现计数排序"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!计数排序计数排
千家信息网最后更新 2026年11月02日C++中如何实现计数排序

本篇内容介绍了"C++中如何实现计数排序"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

计数排序

计数排序是一种非比较的排序算法

优势:

计数排序在对于一定范围内的整数排序时,时间复杂度为O(N+K) (K为整数在范围)快于任何比较排序算法,因为基于比较的排序时间复杂度在理论上的上下限是O(N*log(N))。

缺点:

计数排序是一种牺牲空间换取时间的做法,并且当K足够大时O(K)>O(N*log(N)),效率反而不如比较的排序算法。并且只能用于对无符号整形排序。

时间复杂度:

O(N) K足够大时为O(K)

空间复杂度:

O(最大数-最小数)

性能:

计数排序是一种稳定排序

代码实现:

#include  #include  #include   using namespace std;  //计数排序,适用于无符号整形 void CountSort(int* a, size_t size) {   assert(a);   size_t max = a[0];   size_t min = a[0];   for (size_t i = 0; i < size; ++i)   {     if (a[i] > max)     {       max = a[i];     }     if (a[i] < min)     {       min = a[i];     }   }   size_t range = max - min + 1;   //要开辟的数组范围   size_t* count = new size_t[range];   memset(count, 0, sizeof(size_t)*range);  //初始化为0   //统计每个数出现的次数   for (size_t i = 0; i < size; ++i)   //从原数组中取数,原数组个数为size   {     count[a[i]-min]++;   }   //写回到原数组   size_t index = 0;   for (size_t i = 0; i < range; ++i)  //从开辟的数组中读取,开辟的数组大小为range   {     while (count[i]--)     {       a[index++] = i + min;     }   }   delete[] count; }  void Print(int* a, size_t size) {   for (size_t i = 0; i < size; ++i)   {     cout << a[i] << " ";   }   cout << endl; }
#include "CountSort.h"  void TestCountSort() {   int arr[] = { 1, 2, 3, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 2, 2, 2, 4, 5, 8, 9, 5, 11, 11, 22, 12, 12 };   size_t size = sizeof(arr) / sizeof(arr[0]);   CountSort(arr, size);   Print(arr, size); }  int main() {   TestCountSort();   system("pause");   return 0; }

"C++中如何实现计数排序"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

排序 数组 复杂 复杂度 时间 算法 范围 C++ 内容 整数 更多 知识 空间 符号 实用 最大 最小 学有所成 接下来 上下 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中关村互联网 科技集团 互联网通讯科技 唐信互联网科技 壹账通互联网科技 新浪科技互联网 奔汉互联网科技 互联网科技网站 互联网高科技股票 互联网公司会议桌创意科技软装饰 成都铂石互联网科技做什么的 厦门千工互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 互联网在线教育科技创业 山东星卡互联网科技有限公司官网 厦门江牛科技互联网 互联网科技股为什么大涨 陕西云淼互联网科技公司 承德科技产业互联网平台 株洲百竞科技的互联网营销顾问 互联网 科技节活动 微视频大赛 南京欣网互联网络科技有限公司 湖南永感互联网科技有限公司 互联网最新的科技 千方科技属于互联网企业吗 互联网科技人工智能实验室 内蒙古九一互联网科技 佛山市翊博互联网络科技有限公司 科技互联网海报 浙南科技城互联网大厦招聘 昆明中奇联合互联网科技
0