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

北京大学网站建设阿坝州网站制作

北京大学网站建设,阿坝州网站制作,电商网站设计与制作总结,深圳做网站做得比较好的公司文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组…

在这里插入图片描述

文章目录

  • 1. 定义
  • 2. 算法步骤
  • 3. 动图演示
  • 4. 性质
  • 5. 算法分析
  • 6. 代码实现
    • C语言
    • Python
    • Java
    • Go
  • 结语

1. 定义

计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数

在这里插入图片描述

2. 算法步骤

算法的步骤如下:

  • (1)找出待排序的数组中最大和最小的元素
  • (2)统计数组中每个值为i的元素出现的次数,存入数组C的第i项
  • (3)对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)
  • (4)反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1

(统计相同元素出现次数,根据统计的结果将序列回收到原来的序列中)

在这里插入图片描述

在这里插入图片描述

3. 动图演示

在这里插入图片描述

4. 性质

稳定性

计数排序是一种稳定的排序算法。

空间复杂度

计数排序的空间复杂度为 O ( r a n g e ) O(range) O(range)

时间复杂度

计数排序的时间复杂度为 O ( n + r a n g e ) O(n + range) O(n+range), 其中range代表待排序数据的值域大小,也就是下面算法分析中的k

5. 算法分析

计数排序是一个稳定的排序算法。当输入的元素是 n 个 0到 k 之间的整数时,时间复杂度是 O ( n + k ) O(n+k) O(n+k),其排序速度快于任何比较排序算法。当k不是很大并且序列比较集中时,计数排序是一个很有效的排序算法。

6. 代码实现

C语言

void CountSort(int* a, int n)
{int min = a[0], max = a[0];for (int i = 1; i < n; i++){if (a[i] > max)max = a[i];if (a[i] < min)min = a[i];}int range = max - min + 1;int* count = (int*)malloc(sizeof(int) * range);if (count == NULL){perror("malloc fail");return;}memset(count, 0, sizeof(int) * range);// 统计次数for (int i = 0; i < n; i++){count[a[i] - min]++;}// 排序int j = 0;for (int i = 0; i < range; i++){while (count[i]--){a[j++] = i + min;}}
}

Python

def countingSort(arr, maxValue):bucketLen = maxValue+1bucket = [0]*bucketLensortedIndex =0arrLen = len(arr)for i in range(arrLen):if not bucket[arr[i]]:bucket[arr[i]]=0bucket[arr[i]]+=1for j in range(bucketLen):while bucket[j]>0:arr[sortedIndex] = jsortedIndex+=1bucket[j]-=1return arr

Java

public class CountingSort implements IArraySort {@Overridepublic int[] sort(int[] sourceArray) throws Exception {// 对 arr 进行拷贝,不改变参数内容int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);int maxValue = getMaxValue(arr);return countingSort(arr, maxValue);}private int[] countingSort(int[] arr, int maxValue) {int bucketLen = maxValue + 1;int[] bucket = new int[bucketLen];for (int value : arr) {bucket[value]++;}int sortedIndex = 0;for (int j = 0; j < bucketLen; j++) {while (bucket[j] > 0) {arr[sortedIndex++] = j;bucket[j]--;}}return arr;}private int getMaxValue(int[] arr) {int maxValue = arr[0];for (int value : arr) {if (maxValue < value) {maxValue = value;}}return maxValue;}}

Go

func countingSort(arr []int, maxValue int) []int {bucketLen := maxValue + 1bucket := make([]int, bucketLen) // 初始为0的数组sortedIndex := 0length := len(arr)for i := 0; i < length; i++ {bucket[arr[i]] += 1}for j := 0; j < bucketLen; j++ {for bucket[j] > 0 {arr[sortedIndex] = jsortedIndex += 1bucket[j] -= 1}}return arr
}

结语

今天的分享到这里就结束啦!如果觉得文章还不错的话,可以三连支持一下。

也可以点点关注,避免以后找不到我哦!

Crossoads主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的动力!

带你初步了解排序算法:https://blog.csdn.net/2301_80191662/article/details/142211265
直接插入排序:https://blog.csdn.net/2301_80191662/article/details/142300973
希尔排序:https://blog.csdn.net/2301_80191662/article/details/142302553
直接选择排序:https://blog.csdn.net/2301_80191662/article/details/142312028
堆排序:https://blog.csdn.net/2301_80191662/article/details/142312338
冒泡排序:https://blog.csdn.net/2301_80191662/article/details/142324131
快速排序:https://blog.csdn.net/2301_80191662/article/details/142324307
归并排序:https://blog.csdn.net/2301_80191662/article/details/142350640
计数排序:https://blog.csdn.net/2301_80191662/article/details/142350741
十大经典排序算法总结与分析:https://blog.csdn.net/2301_80191662/article/details/142211564

在这里插入图片描述

http://www.yayakq.cn/news/266120/

相关文章:

  • 网站的主题是什么360优化大师官方网站
  • 河南省建设厅证件证件查询网站案例学——网页设计与网站建设
  • vs网站界面是什么做的中国互联网企业100强榜单
  • 做网站需要注意哪些网站模版上传空间后怎么做
  • 网站制作软件有哪些宁波工程建设信息网
  • 网站后台数据网站建设中魔板
  • 英文都不懂 学网站建设维护难吗深圳装修网站建设
  • 中国建设协会官方网站公司网站开发策划
  • 网站建设费是什么设计素材网站
  • 四川冠辰网站建设市场营销方案500字
  • 临沂专业网站建设设计公司长沙县营销型网站建设选哪家
  • 金泉网 网站建设推广营销方案
  • 手机怎样做网站东莞网站建设哪家好
  • 给企业做网站挣钱吗网站后台模版
  • cms做企业网站6延边企业网站建设
  • 365网站个人网站备案做论坛
  • wordpress免费网站模板下载地址拓什么设计网站
  • 杰瑞网站建设杭州软件开发培训学校
  • 海尔网站建设的目标是什么首次进入网站时给一个alert怎么做
  • 网站建设指南 读书心得试描述一下网站建设的基本流程图
  • 网站设计模板免费下载app001推广平台官网
  • 县级网站建设企业网站源码vue
  • 怎么做这个购物网站wordpress邮箱美化
  • 郑州网站排名优化公司网站建设有关数据库的代码
  • 网站开发的软硬环境怎么描述wordpress注册链接无效
  • 管理部门网站建设说明书在什么网站做贸易好
  • 手机端 网站 模板做宠物的网站主题思想
  • 建设广告网站微信卖货小程序怎么做
  • 建设济南公司网站开发网站心得
  • 高校网站设计方案罗湖网站设计多少钱