排序--看一眼就忘不了
2015-10-08 15:48
316 查看
排序是为了方便检索,涉及到一组内容,对这一组对象按照规定次序重新排列。
排序的规则和方式多种多样,每一类排序方式他们的基本思想是一致的。不同排序方式的适用情况和优劣,用时间复杂度和空间复杂度衡量。每一种排序方法本身决定了排序方法的稳定性。所以我们可以从四个方面宏观的理解排序的内容。
4类排序,列出共6种;插入排序是一种,归并排序一种。交换排序和选择排序都是两种。
在时间复杂度上分为了两类:其中3种时间复杂度为O(n^2)分别是冒泡排序和名称中带“直接”二字的直接插入排序和直接选择排序。通过适用范围得出,除了堆排序外,时间复杂度为O(n^2)的排序方式,都适用于记录数量小的序列;
在上图中,4类,6种排序方法中,归并和插入都是稳定的,选择是都不稳定的。交换排序中,冒泡是稳定的,快速是不稳定的。
总结
对排序从这4个角度入手,从宏观上总结。每一类排序都有主要的思想,每一类中围绕思想扩展出多种排序方式。当排序一个序列的时候,根据实际情况和排序算法的优劣选择出合适的。
排序的规则和方式多种多样,每一类排序方式他们的基本思想是一致的。不同排序方式的适用情况和优劣,用时间复杂度和空间复杂度衡量。每一种排序方法本身决定了排序方法的稳定性。所以我们可以从四个方面宏观的理解排序的内容。
分类
排序根据待排序的记录是否全部放在内存中分为内部排序和外部排序。内部排序表示记录全部存放在内存中。这里我们只介绍内部排序。基本思想
指标
时间复杂度的分析从键值比较的次数和记录移动的次数两方面来考虑。4类排序,列出共6种;插入排序是一种,归并排序一种。交换排序和选择排序都是两种。
在时间复杂度上分为了两类:其中3种时间复杂度为O(n^2)分别是冒泡排序和名称中带“直接”二字的直接插入排序和直接选择排序。通过适用范围得出,除了堆排序外,时间复杂度为O(n^2)的排序方式,都适用于记录数量小的序列;
稳定性
稳定性是指相同键值的两个记录在排序前后相对位置的变化情况。如果相对位置不会变化为稳定,反之不稳定;在上图中,4类,6种排序方法中,归并和插入都是稳定的,选择是都不稳定的。交换排序中,冒泡是稳定的,快速是不稳定的。
总结
对排序从这4个角度入手,从宏观上总结。每一类排序都有主要的思想,每一类中围绕思想扩展出多种排序方式。当排序一个序列的时候,根据实际情况和排序算法的优劣选择出合适的。
相关文章推荐
- 图片入库后应该做的
- java输出调试技巧及Eclipse快捷键使用方法
- HDU 4337 King Arthur's Knights 它输出一个哈密顿电路
- D3学习教程
- Java序列化的几种方式以及序列化的作用
- git conflict
- 实验一报告
- linux下查看mysql版本
- 使用Chrome DevTools的Timeline和Profiles提高Web应用程序的性能
- swift之宏定义
- JVM中符号引用与直接引用
- lua中给表(table)重载运算符,使table之间可以互相加减乘除
- Excel导入异常Cannot get a text value from a numeric cell解决
- deeplearning系列(三)梯度检验
- Android基础: 数据存储(二):数据库存储和获取数据
- 大型网站架构与分布式架构
- Unity NavMesh导航网格 初级教程
- mongoose
- http协议格式
- 计算机中运行Xbrowser,丢失msvcr110.dll