数据结构+算法_温故知新系列_第8章排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37770023/article/details/83714715

第8章 排序

8.1 概述:

1. 排序的定义:将一组杂乱无章的数据按一定规律顺次排列起来。

2. 排序的目的:方便查找。

3. 内外排序区分:若待排序记录都在内存中,称为内部排序。若待排序记录一部分在内存,一部分在外存,则称为外部排序。(外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外存,显然外部排序要复杂得多)

4 排序算法好坏的衡量标准:时间效率/空间效率/稳定性

 

8.2 插入排序

基本思想:

每步将一个待排序的对象,按其关键码大小,插入到前面已经排好序的一组对象的适当位置上,直到对象全部插入为止。(即一边插入一边排序,保证子序列中随时都是排好序的)

插入排序分类:

A: 直接插入排序(基于顺序查找)

排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直至整个序列有序;

时间O(n)=n^2

空间O(n)=1

稳定性:稳定的排序;

 

B:折半插入排序(基于折半查找)

减少了比较的次数,但并未减少移动的次数,平均性能比直接插入排序好;

时间O(n)=n^2

空间O(n)=1

稳定性:稳定的排序;

 

C: 希尔排序 (基于逐趟缩小增量)

先将整个待排记录序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序;

时间O(n^(1.3—2)) 想要弄清关键词比较次数和记录移动次数与增量选择之间的关系,并给出完整的数学分析,今仍然是数学难题。

空间:O(n)=1

稳定性:不稳定的排序

 

8.3 交换排序

基本思想:

两两比较,如果发生逆序则交换,直到所有记录都排好序为止;

 

A: 冒泡排序

基本思想:每趟不断将记录两两比较,并按“前小后大”规则交换

时间O(n)=n^2

空间O(n)=1

稳定性:稳定的排序

 

B: 快速排序

基本思想:

任意一个元素(如第一个)为中心,所有比它小的元素都前放,比它大的元素都后放,形成两个左右子表,对各个子表重新选择中心元素并依此规则调整,直到子表的元素只有一个元素;

时间O(n)=nlogn

空间O(n)=logn

稳定性:不稳定的排序

 

8.4 选择排序

A:直接选择排序:

基本思想:

每一趟在后面n-i-1个中宣传关键码最小的对象,作为有序序列的第i个记录;

时间O(n)=n^2

空间O(n)=1

稳定性:不稳定的排序

 

 

 

一边复习,一边记录,还有部分内容,未完待续,慢慢补上!!!

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_37770023/article/details/83714715