Chapter 6 排序
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很大:关键字位数较少可分解:基数排序

Chapter 6 排序的更多相关文章
- Chapter 9 (排序)
1.排序算法: //****************************Sort.h******************************************** #ifndef SOR ...
- 《算法导论》 — Chapter 7 高速排序
序 高速排序(QuickSort)也是一种排序算法,对包括n个数组的输入数组.最坏情况执行时间为O(n^2). 尽管这个最坏情况执行时间比較差.可是高速排序一般是用于排序的最佳有用选择.这是由于其平均 ...
- MySQL Crash Course #03# Chapter 5. 6 排序. BETWEEN. IS NULL
索引 排序检索的数据 SQL 过滤 vs. 应用程序过滤 简单 Where 补充:大小写敏感. BETWEEN. IS NULL Sorting Retrieved Data mysql> SE ...
- 《算法导论》 — Chapter 8 线性时间排序
序 到目前为止,关于排序的问题,前面已经介绍了很多,从插入排序.合并排序.堆排序以及快速排序,每一种都有其适用的情况,在时间和空间复杂度上各有优势.它们都有一个相同的特点,以上所有排序的结果序列,各个 ...
- Chapter 5. Label and Entry Widgets 标签和输入部件
Chapter 5. Label and Entry Widgets 标签和输入部件 有时候,你需要用户输入特定的信息,比如他们的名字,地址或者 甚至序号. 简单的方式来实现这个是使用Enry 部件 ...
- 利用ArrayList对Hashtable其进行排序
前言: 最近在使用Hashtable的时候发现一个问题:就是当你对Hashtable进行遍历的时候整个输出结果是毫无顺序的, 上网查了一下说是Hashtable有自己内部的排序机制,如果要自定义排序的 ...
- Chapter 1 Securing Your Server and Network(8):停止未使用的服务
原文:Chapter 1 Securing Your Server and Network(8):停止未使用的服务 原文出处:http://blog.csdn.net/dba_huangzj/arti ...
- MVC 5 的 EF6 Code First 入门 系列:排序、筛选和分页
这是微软官方SignalR 2.0教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第三篇:排序.筛选 ...
- Java温故而知新-冒泡法排序
冒泡法排序是各种初学者在学习数组与循环结构时都会练习的一种简单排序算法. 冒泡法的精髓在于比较相邻的两个元素,较大的元素会不断的排到队伍后面去,就像水里的泡泡一样不断向上跑. 想像一下倒在一个透明玻璃 ...
随机推荐
- CTR预估的常用方法
1.CTR CTR预估是对每次广告的点击情况做出预测,预测用户是点击还是不点击. CTR预估和很多因素相关,比如历史点击率.广告位置.时间.用户等. CTR预估模型就是综合考虑各种因素.特征,在大量历 ...
- iloc,loc,ix,df[]
总结一. iloc可以把i当做第几个,所以是按行序号;其他的就清楚了. import pandas df = pandas.DataFrame({'a': [1, 2, 3, 4],'b': [5, ...
- yii2中使用定义在 params.php文件中的配置
yii2 使用 配置文件中在 params 的配置, 可以用 Yii::$app->params['key1']形式访问 参考 yii can't access Yii::$app->pa ...
- TCP三次握手形象理解
tcp三次握手就像是你用企业微信给人家发信息,首先你得确认别人在不在,你会发 在吗? 这个时候显示的是未读 对方看到之后未读会变成已读 然后他会回复你 在的 你看到这个消息后,他那边也 ...
- 40. 组合总和 II
题目描述: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只 ...
- thinkphp 切换数据库
除了在预先定义数据库连接和实例化的时候指定数据库连接外,我们还可以在模型操作过程中动态的切换数据库,支持切换到相同和不同的数据库类型.用法很简单, 只需要调用Model类的db方法,用法: 常州大理石 ...
- 云-腾讯云-笔记:pom.xml 配置
ylbtech-云-腾讯云-笔记:pom.xml 配置 1. pom.xml返回顶部 1.1 com.qcloud / 腾讯云 <!-- https://mvnrepository.com/ar ...
- POJ-2253-Frogger-/Floyd-Warshall/
Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...
- java-day05
数组概念 是一种容器,能够存放多个数据值 特点 多个数据值类型必须统一 是一种引用数据类型 程序运行时,数组长度不可改变 数组初始化 动态初始化格式 数据类型[] 数组名称 = new 数据类型[数组 ...
- Django杂篇(1)
目录 Django杂篇(1) bulk_create Pagination 创建多对多表关系的常用方法 form校验组件的应用 渲染页面 展示错误信息 校验数据 常用字段 Django杂篇(1) 这里 ...