Chapter 6 排序
2024-10-07 23:12:35
Chapter 6 排序
1- 直接插入排序 O(n2) O(1)
2- 折半插入排序 O(n2) O(1)
适合关键字较多
3- 希尔排序O(nlogn) O(1)
又名,缩小增量排序
4- 冒泡排序O(n2) O(1)
一趟排序后一个关键字到达最终位置
5- 快速排序O(nlogn) O(nlogn)栈
一趟排序后一个关键字到达最终位置
设置一个枢轴,待排序序列越接近无序效率越高
6- 简单选择排序O(n2) O(1)
一趟排序后一个关键字到达最终位置,与初始序列无关。
7- 堆排序O(nlogn) O(1)
可以看成一棵完全二叉树。适合关键字很多,e.g.从10000个挑10个最小的
8- 二路归并排序O(nlogn) O(n)
与初始序列无关
9- 基数排序O(d(n+rd)) O(rd)
高位有序,低位有序
总结:
1 时间复杂度
“快些以nlogn的速度归队”(快排,希尔,归并,堆)
2 空间复杂度
快排O(nlogn)
归并O(n)
基数O(rd)
3 容易插 直接插入
起的好 冒泡
(都是O(n),有序)
4 稳定性:考研情绪不稳定,快些选一堆好友聊聊天(快排,希尔,简选,堆)
5 1)一趟排序能保证一个关键字到达最终位置 交换类(2)/选择类(2)
2)关键字比较次数和原始序列无关 ---- 简选,折半
3)排序趟数和原始序列无关 ---- 交换类(2)
直接插入 – 顺序查找
折半插入 – 折半查找
6 内部排序算法应用:
1)n较小:直接插入/简选
2)基本有序:直接插入/冒泡
3)n较大:选择O(nlogn)的“快些归队”
4)n很大:关键字位数较少可分解:基数排序
最新文章
- python迭代器与iter()函数实例教程
- 3. 如何封装查询条件与查询结果到map中
- iOS 应用程序本地化
- mysql入库中文乱码问题
- php命名空间使用
- Linux入门之常用命令(11)复制cp及scp
- Linux实践篇--自动删除n天前日志
- 【HDU1695】GCD(莫比乌斯反演)
- 1-1 maven 学习笔记(1-6章)
- 电脑上的安卓系统——PhoenixOS浅度体验
- QML学习笔记(一)-防止鼠标穿透事件
- 一文读懂遗传算法工作原理(附Python实现)
- request的响应时间elapsed和超时timeout
- [3] 注解(Annotation)-- 深入理解Java:注解(Annotation)--注解处理器
- CSS实现背景透明而背景上的文字不透明
- win7系统部分软件显示乱码怎么办
- JAVA-JSP内置对象之session范围
- commons.httpclient-3.X.jar 和 httpclient-4.x.jar是个什么关系?
- Python使用Redis数据库
- centos上搭建git服务--2
热门文章
- 用AJAX传值参数是中文时可能会乱码
- drupal7 代码生成用户,并自动登录
- jQuery FormData使用方法
- 长链接生成短链接Java源码(调用百度接口)
- python相关软件安装流程图解——虚拟机操作——复制虚拟机主机——CentOS-7-x86_64-DVD-1810
- layui点击按钮自动刷新页面问题
- os.path.basename()
- nodejs与websocket模拟简单的聊天室
- [kuangbin带你飞]专题一 简单搜索 - A - 棋盘问题
- 20.multi_case05