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 排序的更多相关文章

  1. Chapter 9 (排序)

    1.排序算法: //****************************Sort.h******************************************** #ifndef SOR ...

  2. 《算法导论》 — Chapter 7 高速排序

    序 高速排序(QuickSort)也是一种排序算法,对包括n个数组的输入数组.最坏情况执行时间为O(n^2). 尽管这个最坏情况执行时间比較差.可是高速排序一般是用于排序的最佳有用选择.这是由于其平均 ...

  3. MySQL Crash Course #03# Chapter 5. 6 排序. BETWEEN. IS NULL

    索引 排序检索的数据 SQL 过滤 vs. 应用程序过滤 简单 Where 补充:大小写敏感. BETWEEN. IS NULL Sorting Retrieved Data mysql> SE ...

  4. 《算法导论》 — Chapter 8 线性时间排序

    序 到目前为止,关于排序的问题,前面已经介绍了很多,从插入排序.合并排序.堆排序以及快速排序,每一种都有其适用的情况,在时间和空间复杂度上各有优势.它们都有一个相同的特点,以上所有排序的结果序列,各个 ...

  5. Chapter 5. Label and Entry Widgets 标签和输入部件

    Chapter 5. Label and Entry Widgets  标签和输入部件 有时候,你需要用户输入特定的信息,比如他们的名字,地址或者 甚至序号. 简单的方式来实现这个是使用Enry 部件 ...

  6. 利用ArrayList对Hashtable其进行排序

    前言: 最近在使用Hashtable的时候发现一个问题:就是当你对Hashtable进行遍历的时候整个输出结果是毫无顺序的, 上网查了一下说是Hashtable有自己内部的排序机制,如果要自定义排序的 ...

  7. Chapter 1 Securing Your Server and Network(8):停止未使用的服务

    原文:Chapter 1 Securing Your Server and Network(8):停止未使用的服务 原文出处:http://blog.csdn.net/dba_huangzj/arti ...

  8. MVC 5 的 EF6 Code First 入门 系列:排序、筛选和分页

    这是微软官方SignalR 2.0教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第三篇:排序.筛选 ...

  9. Java温故而知新-冒泡法排序

    冒泡法排序是各种初学者在学习数组与循环结构时都会练习的一种简单排序算法. 冒泡法的精髓在于比较相邻的两个元素,较大的元素会不断的排到队伍后面去,就像水里的泡泡一样不断向上跑. 想像一下倒在一个透明玻璃 ...

随机推荐

  1. mysql双主热备

    先搭建mysql主从模式,主从请参考mysql 主从笔记 然后在在配置文件里添加如下配置 1 log_slave_updates= #双主热备的关键参数.默认情况下从节点从主节点中同步过来的修改事件是 ...

  2. 【JZOJ6376】樱符[完全墨染的樱花]

    description analysis 无向图上任意两点最大流不超过\(2\),说明该图是仙人掌 由于最大流等于最小割,如果一条边在两个环里,断掉两个端点至少需要\(3\)的代价 对于该仙人掌,求两 ...

  3. javaScript 习题总结(持续更新)

    判定偶数 function collect_all_even(collection) { return collection.filter(item => item%2 == 0); } 两个集 ...

  4. day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态

    Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要 ...

  5. 二分查找总结及部分Lintcode题目分析 1

    进行二分查找课程回顾与总结,包括以下几个方面,二分法的模板总结和解题思路.应用. 二分法模板总结classical binary search: 1. 必须要做的排除极端情况,也就是数组(用A表示)不 ...

  6. debezium监听数据库变化Date类型数据的还原

    debezium是一个开源的分布式CDC系统,支持对接各种数据源,将数据源中已持久化的数据变更捕获后写入消息队列. 当数据源是mysql时,debezium通过BINLOG实时捕获已提交事务数据. 在 ...

  7. 第八篇:ZTree操作总结

    花了一个多星期,终于完成了这个完整的功能,今天周五是时候总结下加深理解了. 项目要实现的功能:将树形目录发布到发布库,若是根目录,没有发布,连同自己和下面所有的子目录们全部发布:不是根目录,判断父目录 ...

  8. JDK1.8中文CHM下载 -- java开发搬运工

    网上一番查找后,发现csdn有,但是要收费,之后从某地找到热心网友的分享,现贡献给大家! 不啰嗦,直接上货! 链接:https://pan.baidu.com/s/1b6Wg7LiUZsFSYGsvR ...

  9. js基础应用-打字机,震动窗口

    js基础应用一,窗口震动 html+js代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  10. Spoj-DISUBSTR - Distinct Substrings~New Distinct Substrings SPOJ - SUBST1~(后缀数组求解子串个数)

    Spoj-DISUBSTR - Distinct Substrings New Distinct Substrings SPOJ - SUBST1 我是根据kuangbin的后缀数组专题来的 这两题题 ...