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

本文介绍了排序的基本概念,包括排序的定义、目的和应用。文章讨论了排序算法的效率评价标准,如执行时间和辅助空间,并概述了几种常见的排序算法,如直接插入排序、快速排序和堆排序,以及它们的时间复杂度和适用场景。

🚀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. 堆排序算法

时间复杂度和快排一样

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值