当前位置: 首页 > news >正文

长春专业网站建设公司排名WordPress插件Discuz

长春专业网站建设公司排名,WordPress插件Discuz,服装商城网站源码,过期域名网站一.定义#xff1a; 计数排序#xff08;Counting Sort#xff09;是一种非比较性质的排序算法#xff0c;其时间复杂度为O(nk)#xff08;其中n为待排序的元素个数#xff0c;k为不同值的个数#xff09;。这意味着在数据值范围不大并且离散分布的情况下#xff0c;规…  一.定义 计数排序Counting Sort是一种非比较性质的排序算法其时间复杂度为O(nk)其中n为待排序的元素个数k为不同值的个数。这意味着在数据值范围不大并且离散分布的情况下规模越大排序速度越快的特点。然而如果数列元素不满足整数和有确定范围的条件则不能使用计数排序。 二.原始代码 #includestdio.h #includestring.h #includestdlib.h// 计数排序 void count_sort(int num[], int len) {// 寻找最大值int max num[0];for (int i 1; i len; i) {max max num[i] ? max : num[i]; // 更新最大值}int range max 1; // 计数数组的长度为最大值加1int *arr (int *)malloc(sizeof(int) * range); // 申请空间memset(arr, 0, sizeof(int) * range); // 初始化计数数组为0for (int i 0; i len; i) {arr[num[i]]; // 对每个元素进行计数}// 填充原数组int j 0;for (int i 0; i range; i) {while (arr[i] ! 0) { // 将计数数组中的每个非零元素放回原数组num[j] i; // 填充元素arr[i]--; // 计数减一j; // 标记原数组填充到的位置}}free(arr); // 释放计数数组空间 }int main() {int num[12] { 5, 8, 5, 4, 6, 8, 9, 7, 2, 3, 4, 5 };count_sort(num, 12); // 执行计数排序// 打印结果for (int i 0; i 12; i){printf(%d , num[i]);}return 0; } 输出结果 2 3 4 4 5 5 5 6 7 8 8 9 代码优点 计数排序是一个非比较排序算法对于一个给定的输入数组不论数组中的数字如何分布其时间复杂度始终稳定在O(n)。擅长处理小范围大量重复的整数数据效率非常高实际运行速度通常比其他的O(n log n)比较类排序算法要快。 代码缺点 计数排序算法只能用来排序整数并且只能处理非负整数对于负整数和小数此算法无法正常工作需要进行额外处理才能排序。该排序算法需要额外的空间来存储计数数组如果输入数据的范围最大值-最小值过大将会导致空间的大量浪费。如果待排序的数列中最大和最小数值的差过大需要很大的辅助空间因此空间复杂度显著上升空间效率低。计数排序是一种不稳定的排序无法保证相同数值的元素在排序后保持原有的顺序。 三.优化代码 #includestdio.h #includestdlib.h #includestring.h// 计数排序函数 void count_sort(int num[], int len) {int max num[0]; // 初始化最大值为数组第一个元素int min num[0]; // 初始化最小值为数组第一个元素// 找出数组中最大值和最小值for (int i 1; i len; i) {max max num[i] ? max : num[i];min min num[i] ? min : num[i];}int range max - min 1; // 计算最大值与最小值的差值和1确定结果数组的大小// 动态分配range大小的计数数组并初始化为0int *arr (int *)malloc(sizeof(int) * range);memset(arr, 0, sizeof(int) * range); // 计算每个元素出现的次数for (int i 0; i len; i) {arr[num[i]-min]; // 使用当前元素值减去最小值作为索引}// 按升序排列原数组for (int i 0, t 0; i range; i) {while (arr[i] ! 0) {num[t] i min; // 使用当前索引加上最小值得到原始值t;arr[i]--; // 减去一个元素的计数}}// 释放动态分配的计数数组空间free(arr); }int main() {// 待排序的数组int num[10] { -10, 10, -9, 9, 8, 7, 7, 6, 6, 6 };// 使用计数排序算法进行排序count_sort(num, 10);// 输出排序后的数组元素for (int i 0; i 10; i) {printf(%d , num[i]);}return 0; } 优化点 1.可以实现包含负数的数组排序
http://www.huolong8.cn/news/355732/

相关文章:

  • 网站建设中最重要的环节是沈阳建设工程信息网 费用中项网
  • 我想建设一个网站淄博网站备案
  • 旅游网站页面设计模板哪家公司做企业网站稳定优惠
  • 河北网站备案注销wordpress中文版好还是英文版好
  • 互动平台有效学时是什么意思长沙债务优化公司
  • 淄博网站建设团队个人网站有哪些站
  • 为什么教育网站做的都很烂湘潭企业网站建设 p磐石网络
  • 个人域名备案 网站名称速度啊网站
  • 网站的会员认证怎么做重庆业务网站建设
  • 承接app网站开发的广告惠州网络公司网站建设
  • 网站店铺vr场景可以做吗怎么制作网页推广
  • 东莞网站优化推广方案滨州seo排名
  • 做网络推广常用网站php网站虚拟机
  • 怎么找人做网站娄底网站建设的公司
  • 可以做图片视频的网站泉州公司网页制作
  • 网站作品集厦门百城建设有限公司网站
  • wordpress做的好的网站团购网站开发代码
  • 网站建设属于办公费吗有没有免费查企业信息的软件
  • php网站开发套模板马铃薯交易网站建设方案
  • 南阳网站推广优化公司个人可以做外贸的网站
  • 和目网站网络市场营销
  • 万齐网站建设营销型网站源码
  • 一站式企业服务平台是什么做网站用什么云服务器
  • 聚美优品返利网站怎么做wordpress 整合js
  • 做58同城的网站要多少钱上海哪学网站建设优化
  • 注册公司100万要交多少钱南京网站优化哪家好
  • 兰州网站制作公司排名织梦技术个人网站模板
  • 网站开发市场如何搭建自己得网站
  • 站长之家的作用网站a记录的是做cname
  • 网络营销公司组织架构网站的seo怎么做