计数排序:计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序O(n),计数排序要求输入的数据必须是有确定范围的整数。(直方图统计,再按照顺序扔出来)

动图演示:

程序代码:

#include <iostream>
#include <vector>
using namesapce std;void countingSort(vector<int>& arr, int maxValue=100) {vector<int>bucket(maxValue + 1, 0);int sortedIndex = 0;int arrLen = arr.size();int bucketLen = maxValue + 1; for (int  i = 0; i < arrLen; i++) {if (!bucket[arr[i]]) {bucket[arr[i]] = 0;}bucket[arr[i]]++;}for (int j = 0; j < bucketLen; j++) {while (bucket[j] > 0) {arr[sortedIndex++] = j;bucket[j]--;}}return;
}int main()
{vector<int> arr = {1,23,4,5,67,8,3,1,5,4};countingSort(arr);for(int i = 0; i < arr.size(); i++){   cout << arr[i] << " ";}cout << endl;return 0;

【计数排序】c++实现计数排序相关推荐

  1. 排序算法之计数排序、基数排序和桶排序

    转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...

  2. 【排序算法】计数排序引发的围观风波——一种O(n)的排序

    前言 计算机课上,老师给一串数字6 1 6 9 9 1 4 2 1 5 8 8,问道:这一串数字,你们写个程序给我看,要求效率较高.学不出来的别下课了. 顿时场下一片哗然,但有很多小朋友硬着头皮啪啪啪 ...

  3. 排序算法:桶排序、计数排序、基数排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 这篇博客将主要介绍三种时间复杂度是 ...

  4. 算法导论-排序(四)计数排序(线性时间排序)

    目录 1.计数排序介绍 2.流程图 3.代码实现 4.性能分析 5.参考资料 内容 1.计数排序介绍 什么是计数排序? 计数排序是一种特殊的排序算法,之前介绍的排序算法需要对数进行两两比较,效率下界为 ...

  5. java sorted排序_【算法】排序算法之计数排序

    前几回,我们已经对冒泡排序.直接插入排序.希尔排序.选择排序.快速排序.归并排序.堆排序做了说明分析.本回,将对计数排序进行相关说明分析. 一.排序算法系列目录说明 冒泡排序(Bubble Sort) ...

  6. 【排序算法】计数排序

    当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k).计数排序不是比较排序,排序的速度快于任何比较排序算法. 由于用来计数的数组B的长度取决于待排序数组中数据的范围(等于 ...

  7. c++ 二维数组 排序_【算法】排序算法之计数排序

    前几回,我们已经对[算法]排序算法之冒泡排序.[算法]排序算法之插入排序.[算法]排序算法之希尔排序.[算法]排序算法之选择排序.[算法]排序算法之快速排序.[算法]排序算法之归并排序.[算法]排序算 ...

  8. java 桶排序_[图解] 桶排序

    桶排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序.选择排序.插入排序.归并排序.快速排序和堆排序都是基于比较的排序,而桶排序提出了一种新的思路,即基于数据状态的排序. 1. 桶排序的 ...

  9. java排序算法总结_排序算法总结及Java实现

    1. 整体介绍 分类 排序大的分类可以分为两种,内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.主要需要理解的都是内排序算法: 内排序可以分为 ...

  10. python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...

    本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...

最新文章

  1. oracle中asm磁盘不足,Oracle用户无法访问ASM磁盘组问题
  2. 用矩阵来运算向量与点的平移
  3. js 监听页面url锚点变化 window.onpopstate
  4. js计算器代码加减乘除_如何用jQuery做一个简易版计算器
  5. Data Collection with Apache Flume(一)
  6. Navicat 12 安装
  7. 遗传算法求解旅行商问题
  8. Docker Compose安装以及入门
  9. Activity内部Handler引起内存泄露的原因分析
  10. 右键菜单的过滤和启动(转载)
  11. 可启动 ISO 合并、Windows 安装光盘合集
  12. excel两表格怎么根据关键词比较指定数据差异
  13. 优思学院|品质圈QCC是什么?如何有效实施?
  14. 32位微型计算机中的32级的4,2013年计算机等级考试一级微机知识预测题(4)
  15. 修复被osx86破坏的网卡
  16. java 回溯法总结,回溯算法(JAVA)
  17. FS4100 锂电充电管理IC输入12V给8.4V充电IC
  18. 【2020 Java基础快速学习路线】写了很久,这是一份最适合普通大众、非科班的路线
  19. 如何查看计算机关闭原因,电脑总是自动重启关机怎么样查找原因
  20. 速卖通+奇门+聚石塔+官方场景/自定义场景流程备忘录

热门文章

  1. 传京东收购“网银”双拼域名wangyin.com
  2. 用主动游泳的三维水母模型量化美杜莎的(medusan)机械空间的性能(二)(2017)
  3. 【算法】_015_矩阵乘法_直接递归
  4. 图片处理之着色器语言 GLSL (opengl-shader-language) 内建函数
  5. Mac使用CMake编译stasm
  6. Python兼职私活接单方法大曝光,这5种方法你知道吗?
  7. 【力扣刷题 | 第十一天】
  8. 安卓系统分享到qq、微信、微博
  9. 电气工程学概论 第二版 美 J.G. Cogdell 著 贾洪峰 译
  10. 面试题--new关键字