排序算法
来源:互联网 发布:手机淘宝详情页视频 编辑:程序博客网 时间:2024/06/14 18:57
排序算法
排序:整理文件中的记录,使之按关键字递增(递减)的次序排列起来
被排序对象-文件
排序运算的依据-关键字
1.排序的稳定性
当待排序记录的关键字均不相同时,排序结果是唯一的,否则不唯一
稳定性的前提:待排序的文件中,存在多个关键字相同的记录
经过排序后:
若具有相同关键字的记录之间的相对次序保持不变,该排序方法是稳定的
若具有相同关键字的记录之间的相对次序发生变化,则是不稳定的
2.排序的分类
按是否涉及数据的内、外存交换,分为内部排序和外部排序
排序过程中,整个文件都放在内存中处理,排序不涉及数据的内外存交换,,则称之为内部排序,否则,称之为外部排序
内部排序常用于记录个数不是很多的小文件
外部排序适用于记录个数太多、不能一次将其全部放入内存的大文件
3.排序的基本操作
1.比较两个关键字的大小
2.改变指向记录的指针或者移动记录本身
第二中操作依赖于待排序记录的存储方式。
4.待排文件的常用存储方式
1.以顺序表作为存储结构
对记录本身进行物理重排,即通过关键字的比较,将记录移到合适的位置
2.以链表作为存储结构
无须移动记录,仅需修改指针
3.用顺序的方式存储待排序的记录,但同时建立一个辅助表,比如包括关键字和指向记录位置的指针组成的索引表
只需对辅助表的表目进行物理重排,即只移动辅助表的表目,而不移动记录本身
5.评价算法的性能指标
1.执行时间和所需的辅助空间
2.算法本身的复杂程度
1.时间复杂度
大多数排序算法的时间开销主要是关键字之间的比较和记录的移动,有的排序算法其执行时间不仅依赖于问题的规模,还取决于输入实例中数据的状态(已排序好或者说反向排序好)
2.空间复杂度
若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),则称之为就地排序(In-Place),非就地排序要求的辅助空间一般为O(n)
6.稳定排序和不稳定排序
最坏
最好
平均
空间复杂度
稳定性
冒泡排序
O(n2)
O(n)
O(n)
O(1)
稳定
堆排序
插入排序
归并排序
快速排序
基数排序
选择排序
希尔排序
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 排序算法
- 显示当前时间
- AKKA-源码-Actor的结构设计
- java面向对象程序设计之封装
- Drying--(二分)
- Electron之dialog
- 排序算法
- IP地址基础知识
- Markdown基本语法
- 【牛腩】VS2012 无法启动IIS Express Web服务器
- 学习过程中问题记录及知识总结
- 利用WebDriver抓取网页内容
- 坑爹的题目—P1308 统计单词数
- 导入Eclipse源码那个费劲啊~~
- mobilenets