【数据结构】数据结构与算法基础 课程笔记 第八章 排序

Write In Front
个人主页:令夏二十三
欢迎各位→点赞 + 收藏⭐️ + 留言
系列专栏:【数据结构】
总结:希望看完之后,能对你有所帮助,不足请指正!共同学习交流

 文章目录


声明

记录序列以顺序表存储:

#define MAXSIZE 20
typedef int KeyType;//设关键字为整型量 

typedef struct{//定义每个记录的结构 
	KeyType key;//关键字 
	InfoType otherinfo;//其他数据项 
}RedType;

typedef struct{//定义顺序表的结构 
	RedType r[MAXSIZE+1];//存储顺序表的数组,r[0]一般作哨兵或缓冲区  
	int length;//顺序表的长度 
}SqList;

排序算法效率的评价指标有两个:执行时间和辅助空间。 

一、排序概述

什么是排序?

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

        即将无序序列排成一个有序序列的过程。

        如果参加排序的数据结点包含多个数据域,那么排序往往只针对其中某个域而言。

排序的应用十分广泛:软件中直接应用,程序中间接应用(二分法查找、最短路径、最小生成树)

排序方法稳不稳定不决定其好坏。

内部排序的过程是一个逐步扩大记录的有序序列长度的过程。

使有序区中记录的数目增加一个或几个的操作成为一趟排序。

一、 插入排序

1. 直接插入排序算法

对序列从左到右逐步扩充有序区,每次将一个记录向左移动插入到有序区中。

O(n2)

顺序和链式都可以

2. 快速排序算法

递归完成

O(nlog2n)

适用于顺序结构

3. 堆排序算法

时间复杂度和快排一样

堆是完全二叉树,化成序列就是按照二叉树的从上到下、从左到右的顺序来的。

但是不一定是左边比右边大,而是在树里看,如果是大根堆的话,就是双亲结点比孩子结点大;如果是小根堆就相反。

你可能感兴趣的:(笔记)