排序算法

来源:互联网 发布:手机淘宝详情页视频 编辑:程序博客网 时间: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)

稳定

堆排序

 

 

 

 

 

插入排序

 

 

 

 

 

归并排序

 

 

 

 

 

快速排序

 

 

 

 

 

基数排序

 

 

 

 

 

选择排序

 

 

 

 

 

希尔排序

 

 

 

 

 


原创粉丝点击