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

最新文章

  1. python迭代器与iter()函数实例教程
  2. 3. 如何封装查询条件与查询结果到map中
  3. iOS 应用程序本地化
  4. mysql入库中文乱码问题
  5. php命名空间使用
  6. Linux入门之常用命令(11)复制cp及scp
  7. Linux实践篇--自动删除n天前日志
  8. 【HDU1695】GCD(莫比乌斯反演)
  9. 1-1 maven 学习笔记(1-6章)
  10. 电脑上的安卓系统——PhoenixOS浅度体验
  11. QML学习笔记(一)-防止鼠标穿透事件
  12. 一文读懂遗传算法工作原理(附Python实现)
  13. request的响应时间elapsed和超时timeout
  14. [3] 注解(Annotation)-- 深入理解Java:注解(Annotation)--注解处理器
  15. CSS实现背景透明而背景上的文字不透明
  16. win7系统部分软件显示乱码怎么办
  17. JAVA-JSP内置对象之session范围
  18. commons.httpclient-3.X.jar 和 httpclient-4.x.jar是个什么关系?
  19. Python使用Redis数据库
  20. centos上搭建git服务--2

热门文章

  1. 用AJAX传值参数是中文时可能会乱码
  2. drupal7 代码生成用户,并自动登录
  3. jQuery FormData使用方法
  4. 长链接生成短链接Java源码(调用百度接口)
  5. python相关软件安装流程图解——虚拟机操作——复制虚拟机主机——CentOS-7-x86_64-DVD-1810
  6. layui点击按钮自动刷新页面问题
  7. os.path.basename()
  8. nodejs与websocket模拟简单的聊天室
  9. [kuangbin带你飞]专题一 简单搜索 - A - 棋盘问题
  10. 20.multi_case05