计数排序与稳定排序

本文介绍了计数排序的基本原理和实现过程,通过利用数组下标确定元素位置,实现非比较型排序。同时,文章探讨了如何改进计数排序以实现稳定排序,确保相同元素在排序后保持原有顺序。在稳定排序的基础上,文章通过实例展示了处理现实业务场景如成绩排序的方法,并分析了计数排序的局限性,强调其适用于整数且最大值与最小值差距不大的数组。
摘要由CSDN通过智能技术生成

        我们常用的排序算法,有冒泡算法、快速算法等,它们都是基于元素之间的比较来进行排序,有一种特殊的算法不是基于元素比较,而是利用数组下标来确定元素在数组的位置,这种算法就是“计数排序”。

        先来说一下实现的原理,假设有20个随机整数的数组array,他们值分别是:9,3,5,4,9,1,2,7,8,1,3,6,5,3,4,0,10,9,7,9.有没有发现这些整数的大小都是在[0,10]区间内,这时我们可以定义一个长度为11的数组countArray,每个元素的初始值都为0.当我遍历这20个随机整数时,每个值在countArray的下标位置对号入座。

注意:不是赋值,而是每有一个值,就在对应位置+1,譬如遍历array的第一位元素9,就会在array[9]位置+1,遍历array的第二位元素3时,就在countArray[3]位置+1,如此类推。

最终遍历整个array数组后,countArray数组变成以下情况:

value: 1 2 1 3 2 2 1 2 1 4 1
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值