当前位置:网站首页>(本章节完结)排序第五节——非比较排序(计数排序+基数排序+桶排序)(附有自己的视频讲解)
(本章节完结)排序第五节——非比较排序(计数排序+基数排序+桶排序)(附有自己的视频讲解)
2022-08-09 06:50:00 【学习追求高效率】
4. 其他非基于比较排序(了解)
1. 计数排序(附有自己的视频讲解)
计数排序
/** * 时间复杂度:O(N+范围) * 空间复杂度:O(范围) * 稳定性: * 计数排序:适合 给定一个范围的数据 进行排序 * @param array */
public static void countSort(int[] array) {
int maxVal = array[0];
int minVal = array[0];
for (int i = 0; i < array.length; i++) {
if(array[i] < minVal) {
minVal = array[i];
}
if(array[i] > maxVal) {
maxVal = array[i];
}
}
//就能确定当前数组的最大值 和 最小值
int len = maxVal - minVal + 1;
int[] count = new int[len];
//开始遍历array数组 进行计数
for (int i = 0; i < array.length; i++) {
int val = array[i];
count[val-minVal]++;
}
int index = 0;//array数组的下标
for (int i = 0; i < count.length; i++) {
//确保 当前count数组 可以检查完
while (count[i] != 0) {
array[index] = i+minVal;
index++;
count[i]--;
}
}
}
思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 操作步骤
- 统计相同元素出现次数
- 根据统计的结果将序列回收到原来的序列中
【计数排序的特性总结】
- 计数排序在数据范围集中时,效率很高,但是适用范围及场景有限。
- 时间复杂度:O(MAX(N,范围))
- 空间复杂度:O(范围)
- 稳定性:稳定
2. 基数排序(附有自己的视频讲解)
基数排序+桶排序
3. 桶排序(附有自己的视频讲解)
边栏推荐
- 一道很简答但是没答对的SQL题
- makefile记录
- Service
- P6阿里机试题之2020 斐波那契数
- 当酷雷曼VR直播遇上视频号,会摩擦出怎样的火花?
- 详解C语言中的wait()函数和waitpid()函数
- C language implements sequential stack and chain queue
- Altium designer软件常用最全封装库,包含原理图库、PCB库和3D模型库
- dp学习笔记
- Teach you how to make the Tanabata meteor shower in C language - elegant and timeless (detailed tutorial)
猜你喜欢
报错jinja2.exceptions.UndefinedError: ‘form‘ is undefined
6 states of a thread
C语言的内置宏(定义日志宏)
网络学习总结
【Oracle 11g】Redhat 6.5 安装 Oracle11g
Altium designer software commonly used the most complete package library, including schematic library, PCB library and 3D model library
Error jinja2.exceptions.UndefinedError: 'form' is undefined
使用百度EasyDL实现智能垃圾箱
flask创建数据库失败未报错
报错:FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disab
随机推荐
力扣 636. 函数的独占时间
P6阿里机试题之2020 斐波那契数
像天才一样思考:如何培养自己的创造力?
默默重新开始,第一页也是新的一页
Simple to use Lambda expressions
leetcode:55. 跳跃游戏
db.sqlite3没有“as Data Source“解决方法
Output method of list string print(*a) print(““.join(str(c) for c in a) )
MongDb query method
The water problem of leetcode
分布式理论
集合内之部原理总结
【Docker】Docker安装MySQL
C语言的内置宏(定义日志宏)
MongDb的查询方式
SIGINT,SIGKILL,SIGTERM信号区别,各类信号总结
Introduction and use of BeautifulSoup4
APP商品详情源数据接口(淘宝/京东/拼多多/苏宁/抖音等平台详情数据分析接口)代码对接教程
移远EC20 4G模块拨号相关
输入框最前面添加放大镜&&background-image和background-color冲突问题