在线脑图:https://www.processon.com/view/link/617aa00f07912943dd03d4f4
Mac C语言环境配置
软件:Visual Studio Code
Coder Runner 插件 :目的是为了实现在Visual Studio Code中 运行C语言代码
我们如何把现实中大量而复杂的问题以
特定的数据类型
和特定的存储结构
保存到主存储器(内存)当中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法
狭义:
数据结构是专门研究数据存储问题
数据的存储包含两方面:个体的存储+个体关系的存储
广义:
数据结构既包含数据的存储也包含数据的操作
对存储数据的操作就是算法
数据结构 = 个体 + 个体的关系
算法 = 对存储数据的操作
什么是算法?
广义:算法是对存储对象的操作
狭义:指的是解决问题的方法和步骤
解题的方法和步骤
如何衡量算法的标准?
1、时间复杂度:程序大概要执行的次数,而非执行的时间
2、空间复杂度:算法执行过程中大概所占用的最大内存
3、难易程度
4、健壮性
数据结构是软件中最核心的课程
程序 = 数据的存储 + 数据的操作 + 可以被计算机执行的语言
1、线性结构
连续存储【数组】
优点:存储速度快
缺点:插入删除元素时很慢
空间有限制
事先必须知道数组的长度
需要大块连续存储块
离散存储【链表】
线性结构的应用----【栈】
线性结构的应用----【队列】
2、非线性结构
(1)、指针的重要性:C语言的灵魂
(2)、定义:
(1)为什么会出现结构体?
为了表达一些复杂的数据,普通的基本类型变量无法满足要求,结构体由此诞生!
(2)什么叫结构体
结构体是用户根据我们实际需要可自己定义的复合数据类型
(3)注意事项:
用阶层问题分析递归与栈
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RWriEn7a-1636795139579)(https://tva1.sinaimg.cn/large/008i3skNgy1gvypqofp7kj31600u0gry.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iHFRanF-1636795139580)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyptu8i2qj31l60r6n13.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o76SwMmF-1636795139581)(https://tva1.sinaimg.cn/large/008i3skNgy1gvypvc0qdhj31pk0tedkq.jpg)]
#include
// 求n的阶层
long getJC(long n){
if(n==1){
return 1;
}else
{
return getJC(n-1) * n;
}
}
int main(){
printf("result=%ld",getJC(20));
return 0;
}
#include
// 求1到100的和
long getSum(long n){
if(n==1){
return 1;
}else
{
return getSum(n-1) + n;
}
}
int main(){
printf("sum=%ld",getSum(100));
return 0;
}
函数的调用
当一个函数的运行期间调用另一个函数,在运行背调函数之前,系统需要完成三件事:
1)、将所有的实际参数
,返回地址
等信息发送给被调函数
2)、 为被调函数的局部变量(也包括形参)分配内存空间
3)、将控制转移动到被调函数的入口,分配空间
从被调函数返回主调函数,系统也要完成三件事:
1)、保存被调函数的返回结果
2)、释放被调函数所占的存储空间
3)、依照被调函数保存的返回地址
将控制转移到主调函数的地方
递归的应用
数和森林就是以递归的方式定义的
数和图的很多算法都是以递归来实现的
很多数学公式都是以递归的方式来定义的
什么是线性结构?
可以用一根线把所有节点串起来,否则为非线性结构(树、图)
(1)什么叫数组?
元素类型相同,大小相等
(2)数组的优缺点?
自创数组
#include
#include
#include // 包含了exit();
/*
模拟数组
*/
// 定义了一个数据类型,该数据类型的名字叫struct Arr,含有三个成员,分别是pBase,len,cnt
struct Arr{
int *pBase; // 存储的是数组第一个元素的地址
int len; // 数组所能容纳的最大元素个数
int cnt; // 当前数组有效元素的个数
};
/*
所有声明
*/
void initArr(struct Arr *pArr, int length);
bool isEmpty(struct Arr *pArr);
void showArr(struct Arr *pArr);
bool appendArr(struct Arr *pArr ,int val);
bool insertArr(struct Arr *pArr ,int pos,int val);
bool isFull(struct Arr *pArr);
bool deleteArr(struct Arr *pArr ,int pos,int *pVal);
void inversionArr(struct Arr *pArr);
void softArr(struct Arr *pArr);
/*
主函数
*/
int main(){
// int val;// 用于接收删除元素的值
struct Arr arr; // 定义一个变量arr,目前没有内容
initArr(&arr,6);
// printf("%d\n",arr.len);
// showArr(&arr);
// printf("\n---------------------\n");
// appendArr(&arr,1);
// appendArr(&arr,2);
// appendArr(&arr,3);
// appendArr(&arr,4);
// appendArr(&arr,5);
// appendArr(&arr,6);
// appendArr(&arr,7);
// showArr(&arr);
// printf("\n---------------------\n");
// insertArr(&arr,6,99);
// showArr(&arr);
// 测试deleteArr()
// appendArr(&arr,1);
// appendArr(&arr,2);
// appendArr(&arr,3);
// appendArr(&arr,4444);
// appendArr(&arr,5);
// appendArr(&arr,6);
// showArr(&arr);
// printf("\n---------------------\n");
// deleteArr(&arr,4,&val); // val为用于接受所删除数据的值
// printf("被删的元素值为:%d\n",val);
// showArr(&arr);
// 实现倒置
// appendArr(&arr,1);
// appendArr(&arr,2);
// appendArr(&arr,3);
// appendArr(&arr,4);
// appendArr(&arr,5);
// appendArr(&arr,6);
// inversionArr(&arr);
// showArr(&arr);
// printf("\n---------------------\n");
// 实现升序排序
printf("\n---------------------\n");
appendArr(&arr,2);
appendArr(&arr,7);
appendArr(&arr,5);
appendArr(&arr,4);
appendArr(&arr,8);
appendArr(&arr,3);
softArr(&arr);
showArr(&arr);
return 0;
}
/*
初始化
*/
void initArr(struct Arr *pArr, int length){
pArr->pBase = (int *)malloc(sizeof(int) * length); //pArr 这个指针变量所指向的那个结构体变量中的pBase
if(NULL == pArr->pBase){
printf("动态内存分配失败!\n");
exit(-1); // 终止挣个程序
}else{
pArr->len = length; // 数组所能容纳的最大元素个数
pArr->cnt = 0;
}
return;
}
/*
显示输出
*/
void showArr(struct Arr *pArr){
if(isEmpty(pArr)){
printf("数组为空\n");
}else{
for (int i = 0; i < pArr->cnt; i++)
{
printf("%d ",pArr->pBase[i]);
printf("\n");
}
}
}
/*
判断数组是否为空
*/
bool isEmpty(struct Arr *pArr){
if (0 == pArr->cnt){
return true;
}else{
return false;
}
}
/*
追加
*/
bool appendArr(struct Arr *pArr ,int val){
// 满了 不能追加
if(isFull(pArr)){
return false;
}
// 不满的时候可以追加 : 1、 流程 2、功能 3、试错
pArr->pBase[pArr->cnt] = val;
pArr->cnt++;
return true;
}
/*
判断是否已满
*/
bool isFull(struct Arr *pArr){
if(pArr->len == pArr->cnt){
printf("已满\n");
return true;
}else{
return false;
}
}
bool insertArr(struct Arr *pArr ,int pos,int val){
// 1、判断是否已满,如果已满则不能插入
if(isFull(pArr)){
return false;
}
// 2、再判断是否越界
if(pos <1 || pos>pArr->cnt+1){
return false;
}
for(int i = pArr->cnt-1; i>=pos-1; i--){
pArr->pBase[i+1] = pArr->pBase[i]; // 把最后一个 给 最后一个的下一个
}
pArr->pBase[pos-1] = val; // 插入
pArr->cnt++; // 有效个数加1
return true;
}
bool deleteArr(struct Arr *pArr ,int pos,int *pVal){
if(isEmpty(pArr)){
printf("数组为空\n");
return false;
}
if(pos<1 && pos>pArr->cnt){
printf("范围异常");
return false;
}
// 先找到这个值
*pVal = pArr->pBase[pos-1];
// 开始删除
for(int i = pos; i<pArr->cnt; i++){
pArr->pBase[i-1] = pArr->pBase[i];
}
pArr->cnt--;// 有效个数减1
return true;
}
void inversionArr(struct Arr *pArr){
int i=0; //第一个
int j=pArr->cnt-1; // 最后一个
int temp;
while (i<j) // 值互换
{
temp = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = temp;
i++;
j--;
}
return;
}
void softArr(struct Arr *pArr){
// 选择排序
int temp;
for(int i =0; i<pArr->cnt; i++){
for(int j=i+1; j<pArr->cnt;j++){
if(pArr->pBase[i]>pArr->pBase[j]){
temp = pArr->pBase[i];
pArr->pBase[i] = pArr->pBase[j];
pArr->pBase[j] = temp;
}
}
}
}
预备知识-typedef关键词
目标:手敲链表
1、
#include
typedef int QQ; //为int 从新多去一个名字 int = QQ
typedef struct Student{
int sid;
char name[100];
char sex;
}St; // St 等同于struct Student
int main(){
int i = 10;
QQ j = 10; // QQ等同于int
printf("%d %d",i,j);
struct Student st;
struct Student *ss;
St st; // St st 等价于 struct Student st;
St *ss; // St *ss等价于struct Student *ss;
return 0;
}
2、
#include
typedef struct Student{
int sid;
char name[100];
char sex;
}*St; // *St 等同于struct Student *
int main(){
return 0;
}
3、
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3X8vxHbp-1636795139582)(https://tva1.sinaimg.cn/large/008i3skNgy1guxvs7qj1ej61j70u0gp702.jpg)]
1、N个节点离散的
2、彼此通过指针项链
3、每一个节点只可能有一个前驱节点,每个节点后面只可能有一个后驱节点。收节点没有前驱节点,尾结点没有后驱节点
专业术语:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FrZlmm2-1636795139582)(https://tva1.sinaimg.cn/large/008i3skNgy1guxwgf3wunj61h00c440f02.jpg)]
**首节点 :**第一个有效节点
**尾结点:**最后一个有效节点
头结点:第一个有效节点之前的节点
头结点并不存放有效数据
加头结点的目的主要是为了方便对链表的操作
头结点的数据类型和首结点一样
**头指针:**指向头结点的指针变量
**尾指针:**指向尾结点的指针变量
我们确定一个链表需要几个参数????
只需要一个参数:头指针,因为我们通过头指针可以推算出链表的其他所有信息
1、单链表
2、双链表:每一个节点有两个指针
3、循环链表:能通过任何一个节点找到其他所有的节点
4、非循环链表:
算法有两个标准,一个是广义的,一个是狭义的,从狭义的讲,算法跟数据的存储是有关系的,广义的讲,则
是无关的。
泛型:
利用某种技术达到的效果就是:不同的存储方式,执行的操作是一样的
注:狭义与广义区别
怎么学算法?
涉及数学相关,把答案拿出来,把答案看懂!
如何将一个程序(答案)由不懂到看懂?
1、遍历
2、查找
3、清空
4、销毁
5、求长度
6、排序
7、删除节点
…
自创链表
#include
#include
typedef struct Node{
int data; //数据域
struct Node *pNext;
}NODE,*PNODE;
//声明函数
PNODE create_list();
void traverse_list(PNODE pHead);
bool is_empty(PNODE pHead);
int getLenght(PNODE pHead);
bool insert_list(PNODE pHead,int pos,int val);
bool deleteList(PNODE pHead,int pos,int *val); // 第三个参数用于存储被删链表的数值
void softList(PNODE pHead); //排序
bool insertList(PNODE pHead,int pos,int val); //链表插入 ,pos从1开始
bool deleteList(PNODE pHead,int pos,int *pVal);
int main(){
PNODE pHead = NULL; // 等价于struct Node *pHead = NULL;
pHead = create_list(); //create_list()功能: 创建一个非循环单链表,并将该链表的头结点的地址赋给pHead
traverse_list(pHead);//traverse_list 遍历输出
if (is_empty(pHead))
{
printf("链表为空!\n");
}else{
printf("链表不为空!\n");
}
int len = getLenght(pHead);
printf("链表长度为:%d\n",len);
printf("\n-------------\n");
//测试排序
// softList(pHead);
// traverse_list(pHead);
printf("\n-------------\n");
//测试插入
// insertList(pHead,4,520);
// traverse_list(pHead);
printf("\n-------------\n");
//测试删除
int val;
if (deleteList(pHead,4,&val))
{
printf("删除成功,该元素的值为:%d\n",val);
}else{
printf("删除失败,您好删除的元素不存在\n");
}
traverse_list(pHead);
return 0;
}
PNODE create_list(){
// 分配了一个不存放有效数据的头结点
PNODE pHead = (PNODE)malloc(sizeof(NODE));//
if(NULL == pHead){
printf("分配失败,程序终止!");
exit(-1);
}
PNODE pTail = pHead;
pTail->pNext = NULL;
int len;
int i; // 用来存放用户有效输入节点的个数
int val; // 用来临时存放用户输入的节点的值
printf("请输入您需要生成链表节点的个数:len=");
scanf("%d",&len);
for(i=0; i<len; i++){
printf("请输入第%d个节点的值:",i+1);
scanf("%d",&val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pHead){
printf("分配失败,程序终止!");
exit(-1);
}
pNew->data=val;
// 将生成的节点挂到pHead头指针上,如何挂?方法如下
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;// pTail指向将pNew所在结构体对象的地址
}
return pHead;
}
void traverse_list(PNODE pHead){
// 遍历输出
PNODE p = pHead->pNext;
while (p!= NULL)
{
printf("%d ",p->data);
p = p->pNext;
}
printf("\n");
return;
}
bool is_empty(PNODE pHead){
if (pHead->pNext==NULL)
{
return true;
}else{
return false;
}
}
int getLenght(PNODE pHead){
int len = 0;
// 遍历输出
PNODE p = pHead->pNext;
while (p!= NULL)
{
len++;
p = p->pNext;
}
return len;
}
// bool insert_list(PNODE pHead,int pos,int val);
//冒泡排序
/*
*/
void softList(PNODE pHead){
int i,j;
int temp;
int len =getLenght(pHead);
PNODE p,q;
for (i=0,p=pHead->pNext; i<len-1; i++,p=p->pNext) // 外层循环,6个数,只需要比较5次
{
for(j=i+1,q=p->pNext; j<len; j++,q=q->pNext){
if(p->data>q->data){ //类使用数组中a[i]>a[j]
temp = p->data;
p->data =q->data;
q->data = temp;
}
}
}
return;
}
// 在pHead所指向链表的第pos个节点的前面插入一个新的节点,该节点的值为val,并且pos的值是从1开始
bool insertList(PNODE pHead,int pos,int val){
//pos的范围是否合法
int i = 0;
PNODE p = pHead;
while (p!=NULL && i <pos-1) //这个循环的目的是让p指向pos的前面一个节点
{
p = p->pNext; // 最终p会指向
i++;
}
if (p==NULL || i >pos-1)
{
return false;
}
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew){
printf("分配失败,程序终止!");
exit(-1);
}
pNew->data=val; //值存入
//开始插入
PNODE q = p->pNext; //q为中间变量
p->pNext = pNew;
pNew->pNext=q;
return true;
/*
这三行为核心代码-详细分析可以看下方流程图
PNODE q = p->pNext; //q为中间变量
p->pNext = pNew;
pNew->pNext=q;
*/
}
bool deleteList(PNODE pHead,int pos,int *pVal){
//pos的范围是否合法
int i = 0;
PNODE p = pHead;
while (p->pNext!=NULL && i <pos-1) //这个循环的目的是让p指向pos的前面一个节点
{
p = p->pNext; // 最终p会指向
i++;
}
if (NULL==p->pNext || i >pos-1)
{
return false;
}
//接受被删除节点所存储的数值
*pVal = p->pNext->data;
//开始删除
PNODE q = p->pNext; // 先将要删除的元素存起来,以便后面释放空间
p->pNext = p->pNext->pNext; // 所谓删除,就是将p指向要删除的元素的后面一个,然后将p的空间释放
free(p);
}
插入3行代码分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7VmcoK1w-1636795139583)(https://tva1.sinaimg.cn/large/008i3skNgy1guyrsvusnij617g0u00wh02.jpg)]
定义:一种头尾相连的链表(即:表中最后一个节点的指针域指向头结点,整个链表形成了一个环)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-82Q801CB-1636795139584)(https://tva1.sinaimg.cn/large/008i3skNgy1gvycbjmuluj31gc0aa0th.jpg)]
==优点:==从表中的任一节点出发都能找到表中其他节点。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ih5KKsSA-1636795139585)(https://tva1.sinaimg.cn/large/008i3skNgy1gvych8gfkoj31pi0rwwip.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deD3G3Ll-1636795139586)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyciyb3j1j31ax0u0q7e.jpg)]
如何将带尾指针的两个循环链表合并?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S6JhcwTX-1636795139587)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyclyczpdj31660fs0ue.jpg)]
分析一下有哪些操作?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qDSC5XZZ-1636795139587)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyct7jw4kj31bi0i0dhx.jpg)]
(1)、先保留Ta的头结点:p = Ta->next
(2)、将Ta表的表尾接到Tb表的第一个有效节点:Ta->next =Tb->next->next;
(3)、释放Tb表的头结点:free(Tb->next);delete Tb->next;
(4)、Tb表的尾结点指向Ta表的头结点:Tb->next =p
1、定义:在单链表的每个节点里增加一个指向其直接前驱的指针域prior,这样链表中形成了有两个方向不同的链,故称为双向链表。
2、结构:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QkmgIcrY-1636795139588)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyd16o0n2j31l60j60ve.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3nG0iPH3-1636795139589)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyd4yzum8j31pa0d6gmn.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12rWf49i-1636795139590)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyd5eoncbj31dm094jsk.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riEDNJhO-1636795139590)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyd5t4xirj30ug0aamxh.jpg)]
双向链表的插入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lWnqpPgi-1636795139591)(https://tva1.sinaimg.cn/large/008i3skNgy1gvye28l89dj31at0u0q5s.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qcAxoKSy-1636795139592)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyd75zg84j31o40lm77m.jpg)]
一、链表的优缺点:
优点:
1、节点空间可以动态申请和释放
2、删除和插入操作的时候只需要修改指针,而不需要移动元素
缺点:
3、存储密度小,原因是每个节点在存储数据本身的同时,还需要额外的存储它的后续节点和前驱节点的地址,占用的空间比较大
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rSqLIwNC-1636795139592)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyegifr3dj31b20iu76f.jpg)]
4、非随机存取结构,时间复杂度就提高了
什么是随机存取?
即:任意一个元素都可以通过下表获取到
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Obb5F049-1636795139593)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyekqhwkzj31g20u0wmp.jpg)]
1、线性表的合并
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Wb3SmXr-1636795139594)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyeqy4httj31ou0f2mzi.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2dVmhRGH-1636795139594)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyhx6j83kj30yg0fswg0.jpg)]
实现方式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zzJIY7og-1636795139595)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyi11kel3j31c60oodm6.jpg)]
2、有序线性表的合并
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w8XxypXY-1636795139596)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyes2xdiuj31ne0fegos.jpg)]
为什么是非递减有序排序?
因为可能存在重复元素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RYvBi7Ql-1636795139597)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyi4u8vdkj31me0fugoi.jpg)]
顺序表实现有序表的合并:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2PZv55Uk-1636795139598)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyi8sloxjj31p60oo0zg.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9xy2qUKA-1636795139598)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyibbvnmsj31oe0o6dkq.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3NErfLZ-1636795139599)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyicrsbz1j31fw04i0tr.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZgUkE5RB-1636795139600)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyidi138nj31em04cgmo.jpg)]
链表实现有序表合并
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fwjGttbK-1636795139601)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyilzayzej31ku0okn02.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hl4f9jMC-1636795139601)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyimqglvxj31ne0tadk7.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YLPVSulo-1636795139602)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyin3hwiqj31j40s40vw.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rOUIOxMg-1636795139603)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbctsxtv1j31me0r841w.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2lIx6uEZ-1636795139604)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyirvueagj31kc04u0ty.jpg)]
注:最坏情况就是La和Lb一样长,所有的都要执行完,所有时间复杂度是最大为
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNeKiP3X-1636795139604)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyj1wxze9j31db0u079s.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIO4YNTT-1636795139605)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyj19k5q6j31l80u00x0.jpg)]
1、顺序存储实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aVQDyrR5-1636795139606)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyj5b9jo3j31ll0u0n4k.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3F39mLNt-1636795139607)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyj8g4809j31n20u07bl.jpg)]
使用顺序表进行存储的问题:**==
1、不带好确定分配多大的空间进行存储,存储空间分配不灵活
2、需要新建立一个数组,空间复杂度高
怎么解决以上问题?
答:采用链表进行存储
2、链式存储实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g1suQpc6-1636795139607)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjdsggcgj31bj0u0n3j.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WYusSpgm-1636795139608)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjfpseahj31on0u0q9p.jpg)]
创建多项式代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVgWqfI2-1636795139609)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjicb7sej31oh0u0gsy.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5TtdGzO9-1636795139609)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjmj2gnaj31550u00w7.jpg)]
多项式相加算算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6jcLIMS-1636795139610)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjqs9t3vj31oy0tm11z.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltjhiStr-1636795139611)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjsafr0aj30yc0tun47.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vxuUPJpl-1636795139611)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjttknk1j31jj0u0gpb.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aDO3m7rE-1636795139612)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyjvbycj3j31ne0ssgqp.jpg)]
一种可以实现“先进后出” 或者 "后进先出"的存储结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBxJCuQn-1636795139613)(https://tva1.sinaimg.cn/large/008i3skNgy1gvylcf0zj2j31ge0t00xc.jpg)]
答:不可能有cab,因为如果c入栈了的话,a、b必然也已经入栈了
只可能为:c-b-a
1、顺序栈的实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAn3egHT-1636795139614)(https://tva1.sinaimg.cn/large/008i3skNgy1gvynp2cyjhj31to0tugsw.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0vCIJ7QV-1636795139614)(https://tva1.sinaimg.cn/large/008i3skNgy1gvynun67zhj31a40u0dke.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wlOyUfdi-1636795139615)(https://tva1.sinaimg.cn/large/008i3skNgy1gvynx65jv3j31jy0u0tex.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-29KQ1Kzz-1636795139616)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyny8jqxvj31qa0pcwlt.jpg)]
顺序栈的代码实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aE7WiY3L-1636795139616)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyo639utyj31360o6q6p.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X8BMH7jY-1636795139617)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyo80qxaqj31jv0u0432.jpg)]
顺序栈的初始化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r48USYlR-1636795139618)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyobhmr8lj31pw0u0dne.jpg)]
判断顺序栈是否为空
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XsxfwRSU-1636795139618)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyoc2zwl4j31rs0p042y.jpg)]
求顺序栈的长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UdhiIsAf-1636795139619)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyocvi7bjj31gc0kw41m.jpg)]
清空顺序栈
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jEdZavEI-1636795139620)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyoep4255j31n40lg0wl.jpg)]
注:前提if(S.base)是提前判断栈是否为空,如果已经为空,就没必要继续下面的操作了
顺序栈的销毁
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Pimvfila-1636795139621)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyoid7na3j31ls0sutcn.jpg)]
顺序栈入栈/压栈
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LYo6aPlS-1636795139621)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyomme7rhj31nm0u0tfd.jpg)]
顺序栈出栈
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ApfluNU-1636795139622)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyoscugr1j31my0u0ah2.jpg)]
2、链式栈的实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cS8Mxvd-1636795139623)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyowabb6rj31pe0u0q9p.jpg)]
初始化栈
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eWM4lKNm-1636795139624)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyoyd1xz3j311q0petbf.jpg)]
判断链栈是否为空
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ck9MhUIH-1636795139624)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyozcp9f7j30xc0kewgy.jpg)]
链栈的插入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D8lEtNdK-1636795139625)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyp24v3ekj31qc0tugry.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jD5NsYTB-1636795139626)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyp9t7myoj31q40u0wm8.jpg)]
1、initStack(); 初始化栈:使得pTop,pBottom都指向一个无用的头结点,这就造出一个空栈了
void initStack(PSTACK pS){
pS->pTop = (PNODE)malloc(sizeof(NODE)); //创建一个空节点(PNODE)malloc(sizeof(NODE))
if (NULL == pS->pTop)
{
printf("动态内存分配失败");
exit(-1);
}else{
pS->pBottom = pS->pTop; // 使得pTop与pBottom都指向它
pS->pTop->pNext = NULL; // pS->pBottom->pNext = NULL; 并且将其值置为空
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0A4PBwTs-1636795139627)(https://tva1.sinaimg.cn/large/008i3skNgy1gv3e8ivfyzj60pk0cujrp02.jpg)]
2、出栈
// 把pS所指向的栈出栈一次,并把出栈的元素存储pVal这个形参所指向的变量中,如果出栈失败,返回false,否则返回true;
bool popStack(PSTACK pS,int *pVal){
if (empt(pS))
{
return false;
}else{
// 出栈===(删除、保存删除节点的值到pVal这个形参所指向的变量中)
PNODE r = pS->pTop;
*pVal = r->data;
pS->pTop = r->pNext;
free(r);
r = NULL;
return true;
}
}
3、压栈
pushStack()实现
void pushStack(PSTACK pS,int val){
PNODE pNew = (PNODE)malloc(sizeof(NODE));
pNew->data = val;
pNew->pNext = pS->pTop; //pS->Top 不能改成pS->Bottom
pS->pTop = pNew;
return;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VKq4llAU-1636795139628)(https://tva1.sinaimg.cn/large/008i3skNgy1gv3ejfqebgj60lo0au74i02.jpg)]
4、traverse遍历
void traverse(PSTACK pS){
PNODE p = pS->pTop;
while (p!=pS->pBottom)
{
printf("%d ",p->data);
p = p->pNext;
}
printf("\n");
return;
}
5、clear()清空
//清空栈
void clear(PSTACK pS){
if (empt(pS))
{
return ;
}else{
PNODE p = pS->pTop;
PNODE q = NULL;
while (p != pS->pBottom)
{
q = p->pNext;
free(p);
p = q;
}
pS->pTop = pS->pBottom; // 清空后结果
}
}
自定义栈完整代码及实现
#include
#include
/**
栈实现
*/
typedef struct Node{
int data;
struct Node *pNext;
}NODE,*PNODE;
typedef struct Stack{
PNODE pTop; //顶部
PNODE pBottom; // 底部
}STACK,*PSTACK;
void initStack(PSTACK); // 初始化栈
void pushStack(PSTACK,int); // 压栈
void traverse(PSTACK); // 遍历输出
bool popStack(PSTACK,int *);// 出栈
bool empt(PSTACK); // 是否为空
void clear(PSTACK); //清空
int main(){
STACK S; // 等价于 struct Stack S;
initStack(&S); // 初始化栈:造出一个空栈
pushStack(&S,1); // 压栈
pushStack(&S,2);
pushStack(&S,3); // 压栈
pushStack(&S,4);
pushStack(&S,5); // 压栈
pushStack(&S,6);
traverse(&S); // 遍历输出
/*
printf("\n---------------------\n");
int val;
if (popStack(&S,&val))
{
printf("出栈成功,出栈的元素是:%d\n",val);
}else
{
printf("出栈失败!\n");
}
*/
//测试清空函数
clear(&S);
traverse(&S); // 遍历输出
return 0;
}
void initStack(PSTACK pS){
pS->pTop = (PNODE)malloc(sizeof(NODE));
if (NULL == pS->pTop)
{
printf("动态内存分配失败");
exit(-1);
}else{
pS->pBottom = pS->pTop;
pS->pTop->pNext = NULL; // pS->pBottom->pNext = NULL;
}
}
void pushStack(PSTACK pS,int val){
PNODE pNew = (PNODE)malloc(sizeof(NODE));
pNew->data = val;
pNew->pNext = pS->pTop; //pS->Top 不能改成pS->Bottom
pS->pTop = pNew;
return;
}
void traverse(PSTACK pS){
PNODE p = pS->pTop;
while (p!=pS->pBottom)
{
printf("%d ",p->data);
p = p->pNext;
}
printf("\n");
return;
}
bool empt(PSTACK pS){
if (pS->pBottom == pS->pTop)
{
return true;
}else{
return false;
}
}
// 把pS所指向的栈出栈一次,并把出栈的元素存储pVal这个形参所指向的变量中,如果出栈失败,返回false,否则返回true;
bool popStack(PSTACK pS,int *pVal){
if (empt(pS))
{
return false;
}else{
// 出栈===(删除、保存删除节点的值到pVal这个形参所指向的变量中)
PNODE r = pS->pTop;
*pVal = r->data;
pS->pTop = r->pNext;
free(r);
r = NULL;
return true;
}
}
//清空栈
void clear(PSTACK pS){
if (empt(pS))
{
return ;
}else{
PNODE p = pS->pTop;
PNODE q = NULL;
while (p != pS->pBottom)
{
q = p->pNext;
free(p);
p = q;
}
pS->pTop = pS->pBottom; // 清空后结果
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FhdDFR4N-1636795139628)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyltbf4zzj31o80rqq7d.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bt1bKpNn-1636795139629)(https://tva1.sinaimg.cn/large/008i3skNgy1gvylwdrjucj30o20hqdgs.jpg)]
思路
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bil8g3sY-1636795139630)(https://tva1.sinaimg.cn/large/008i3skNgy1gvylxx6se1j31800r8tca.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zs1yBkow-1636795139631)(https://tva1.sinaimg.cn/large/008i3skNgy1gvym5poqfxj31ir0u00y2.jpg)]
栈的规则:先入栈的括号后匹配,后入栈的括号先匹配
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dkDVNT6-1636795139632)(https://tva1.sinaimg.cn/large/008i3skNgy1gvym9qqbcaj31q80qyq9c.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mRfQL2uD-1636795139633)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyn9dg1xhj31gs0u045o.jpg)]
是一种可以实现“先进先出”的存储结构!类似于:排队买票
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tUvzaNCF-1636795139634)(https://tva1.sinaimg.cn/large/008i3skNgy1gvylnionthj31sy0tiwm2.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cHOPyIYr-1636795139634)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyq1vxkncj31l30u0q89.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ETJIV5eI-1636795139635)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyq43pg43j31l70u044w.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UL3Haqsd-1636795139636)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyq66nbtbj31m50u0122.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RnaMQSlP-1636795139637)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyqa0rfcvj31kg0u0dm8.jpg)]
初始化时候:
有元素入队了:
有元素出队了:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e9HeOk4x-1636795139637)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyqfcjrlqj31if0u0q82.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nZXJ2znu-1636795139638)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyqkbc5n6j31h00u044t.jpg)]
引入循环队列
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSWb4dNE-1636795139639)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyqmz0f5gj31jz0u0tfq.jpg)]
解决插入时候假上溢问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8fzhAsp0-1636795139640)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzd3hjhk9j321y0ridmg.jpg)]
解决删除时候假溢问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMs0msOe-1636795139640)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzd7icyv7j31my0aujtv.jpg)]
类似于实现循环队列的效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B4OFjzHv-1636795139641)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzd8x1rsvj313y0tw762.jpg)]
如何判断队空和堆满
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PiOZ4Dzv-1636795139642)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdbp75ivj31cu0u0796.jpg)]
方式一:另外设置一个标志以判断是队空还是队满
方式二:另设一个count用于统计个数
方式三:少用一个元素空间
采取方式三实现如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HLw2jMkZ-1636795139643)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdfa2vkoj31au0u0n1m.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xac5vVoy-1636795139644)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdhac51zj31l90u0wm2.jpg)]
代码实现:
0、结构体
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hlvr7QIz-1636795139645)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdlfyyzxj31kg0u0q9c.jpg)]
1、初始化操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsCDnr7k-1636795139646)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdkgh6p6j31mz0u00zl.jpg)]
2、求队列的长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HaBAJnHp-1636795139647)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdpdesiyj31rr0u0q91.jpg)]
3、循环队列的入队算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E7YkIwpe-1636795139648)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdrz0zi1j31t40syn3w.jpg)]
4、循环队列的出队算法
a、先判断是否为空,为空则不能进行出队操作
b、保留被删除的元素
c、对头指针+1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H8p4JMp0-1636795139649)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdv0tldoj31pa0t2n3k.jpg)]
5、取出对头元素
a、前提:队列不能为空
b、直接取出front所在位置的数值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yI616DBv-1636795139650)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzdwt5irsj31ku0s443h.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qMrqrD1r-1636795139650)(https://tva1.sinaimg.cn/large/008i3skNgy1gvze2idrfej31sc0u07bi.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4fw8Ef6g-1636795139651)(https://tva1.sinaimg.cn/large/008i3skNgy1gvze4uk5zej31k00u0q6v.jpg)]
1、链式队列的初始化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jN6ajJKY-1636795139652)(https://tva1.sinaimg.cn/large/008i3skNgy1gvze7tp40xj31kn0u0te4.jpg)]
2、链式队列的销毁
方式1:再定义一个指针变量p用于接收
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VyEhps5z-1636795139653)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzecem81kj31in0u0dmz.jpg)]
方式2:直接用Q.rear接收,节省空间
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-11CUxvFJ-1636795139653)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzeeomahcj31mb0u0q9d.jpg)]
3、链式队列的入队
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tDuzjcvC-1636795139654)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzeheemnfj31bu0u0gqb.jpg)]
4、链队列的出队
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mqp7rW63-1636795139655)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzejp8rn0j31bo0u0adc.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4wpTaxM-1636795139655)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzemjbksfj313c0u0q8o.jpg)]
5、获取链队的队列元素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iu3EwGSk-1636795139656)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzud3ugvrj31ec0o4whw.jpg)]
静态队列都必须是循环队列
分析:
1、为什么静态队列必须是循环队列?
因为静态队列是基于数组实现的,如果不用循环队列,会导致删除的元素所使用的空间无法继续使用,造成空间的浪费
2、循环队列需要几个参数来确定
答:需要两个参数来确定,这2个参数在不同场合有不同的含义(先记住,再去慢慢体会它)
front
rear
3、循环队列的各个参数的含义
这2个参数在不同场合有不同的含义(先记住,再去慢慢体会它)
a、初始化:front与rear的值都为零
b、队列非空:front代表队列的第一个元素,rear代表队列的最后一个有效元素的下一个元素
c、队列空:front与rear的值相等但不一定是零
4、循环队列入队伪算法讲解
两步完成:
(1)、将值存入r所代表的位置
(2)、错误的写法rear=rear+1
正确写法:rear=(rear + 1)%数组的长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eufHH08N-1636795139657)(https://tva1.sinaimg.cn/large/008i3skNgy1gv7m1dtcexj60tq0rygn202.jpg)]
5、循环队列出队伪算法讲解
(1)、先把出队的值保存起来
(2)、front = (front+1) % 数组长度
6、如何判断循环队列是否为空
If(front == rear)则该队列一定为空
7、如何判断循环队列是否已满
有两种方式
(1)、多增加一个标志参数,len-用于记录长度
(2)、少用一个元素,如果front和rear紧挨着,则队列已满
if(front ==(rear+1)%数组长度){
已满
}else{
未满
}
队列的实现
#include
#include
/*
队列
*/
typedef struct Queue{
int * pBase;
int front;
int rear;
}QUEUE;
// 声明
void init(QUEUE *pQ); // 初始化
bool en_queue(QUEUE *pQ,int val); //入队
bool out_queue(QUEUE *pQ,int *pVal); //出队 *pVal用于保存出队的值
void traverse_queue(QUEUE *pQ); // 遍历
bool full_queue(QUEUE *pQ); //判断是否已满
int main(){
QUEUE Q; // 结构体变量
init(&Q);
en_queue(&Q,1);
en_queue(&Q,2);
en_queue(&Q,3);
en_queue(&Q,4);
en_queue(&Q,5);
en_queue(&Q,6);
en_queue(&Q,7);
en_queue(&Q,8);
traverse_queue(&Q);
return 0;
}
void init(QUEUE *pQ){
pQ->pBase = (int *)malloc(sizeof(int)*4); // 代表一个数组
pQ->front = 0;
pQ->pBase = 0;
}
bool full_queue(QUEUE *pQ){
if ((pQ->rear+1) % 6 == pQ->front)
{
return true;
}else
{
return false;
}
}
bool en_queue(QUEUE *pQ,int val){
if(full_queue(pQ)){
return false;
}else
{
pQ->pBase[pQ->rear] = val; // 将val放入rear位置
pQ->rear = (pQ->rear+1) % 6; // 将rear往后移动一个位置
return true;
}
}
void traverse_queue(QUEUE *pQ){
// 从头部遍历,只要没指向r ,就往后遍历
int i = pQ->front;
printf("1111");
while (i!= pQ->rear)
{
printf("2222");
printf("%d ",pQ->pBase[i]);
i = (i+1)%6 ;
}
return;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQcdBULM-1636795139658)(https://tva1.sinaimg.cn/large/008i3skNgy1gvyna562o6j31pg0ia0y2.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZZDvjzc-1636795139658)(https://tva1.sinaimg.cn/large/008i3skNgy1gvynd4itzvj31z00fcjun.jpg)]
串(String) —零个或多个任意字符组成的有限序列
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PWB2o8gc-1636795139659)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzul479nxj31c10u0q6f.jpg)]
关于串的术语
子串、真子串、主串、字符位置、子串位置、空格串、串相等
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yb21w4Iw-1636795139660)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzum7ns5uj31j00nwdjk.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8GwpnCqF-1636795139660)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzus89esgj31q80rk10d.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-86ycLJcL-1636795139661)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzuu9m9dtj31jc0q2jv5.jpg)]
案例引入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ff1M0iaE-1636795139662)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzv06b17ej31p10u0akc.jpg)]
串的定义、存储结构、算法及运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TcPjH1bE-1636795139662)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzv351mlaj31ja0u00xy.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zomJTn5e-1636795139663)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzv53u1cnj31580seq8o.jpg)]
结构分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dV4RV7B-1636795139664)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzv73dydkj31km0sadkh.jpg)]
1、串的顺序存储结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tinlp11B-1636795139664)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzv9giivfj31kk0qoq8t.jpg)]
2、串的链式存储结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T7ndegsj-1636795139665)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvbe6ph2j31c60i4jtt.jpg)]
改进方式,在一个节点中放置多个字符。以克服其缺点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8iveaBLA-1636795139666)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvd8bgbzj31nw0u00za.jpg)]
算法目的:确定主串中所含**子串(模式串)**第一次出现的位置(定位)
**算法应用:**搜索引擎、拼写检查、语言翻译、数据压缩
算法种类:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4zxkVYoN-1636795139670)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvmeqnpcj31kw0ncgqr.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xBhSZdCW-1636795139670)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvso2r2mj31nc0u00yc.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAaA4W0y-1636795139672)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvstmd2vj315k0lcgmf.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkBBpcxX-1636795139672)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvt3kqxij312k0nw3ze.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sYJW5NSA-1636795139673)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvtcg2shj311u0pot9q.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEbsEjoc-1636795139674)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvtjzcntj317y0rata3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjdtW7zn-1636795139675)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvu92o0yj31m60ryacz.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMg1ZLfe-1636795139675)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvwu6cg8j31it0u0gor.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uOrTgImI-1636795139676)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzvy0w8cgj31i80u0grt.jpg)]
从头开始查找代码实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZE8TSBu-1636795139677)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzw4lrtm1j31p80t0q8z.jpg)]
从指定位置开始查找代码实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T6SqZZKm-1636795139677)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbctr3qv4j31ml0u0tdk.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xYI0s2xm-1636795139678)(https://tva1.sinaimg.cn/large/008i3skNgy1gvzx42j4kgj31bi0u00xb.jpg)]
没搞懂
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zH1YDyTZ-1636795139679)(https://tva1.sinaimg.cn/large/008i3skNgy1gw32w9k29xj31dg09emzc.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qePsc4nT-1636795139680)(https://tva1.sinaimg.cn/large/008i3skNgy1gw33824uutj31eq0u0dkq.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3KS6ltq-1636795139680)(https://tva1.sinaimg.cn/large/008i3skNgy1gw339pdmwcj30z80u0dio.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-goPGVrO4-1636795139681)(https://tva1.sinaimg.cn/large/008i3skNgy1gw33u0zu45j319l0u0jui.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LaKjDCnJ-1636795139683)(https://tva1.sinaimg.cn/large/008i3skNgy1gw33ud6noaj31nq0u0k2l.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x79Fk05g-1636795139684)(https://tva1.sinaimg.cn/large/008i3skNgy1gw37azffgdj31ul0u046m.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXifsqmD-1636795139685)(https://tva1.sinaimg.cn/large/008i3skNgy1gw37benwouj31px0u07f6.jpg)]
定义:按照一定格式排列的 具有相同类型的数据元素的集合
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92c6l3RI-1636795139689)(https://tva1.sinaimg.cn/large/008i3skNgy1gw33y5928tj31js0pidjt.jpg)]
极其特殊:既可以看成线性结构,也可以看成非线性结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BlcarVvJ-1636795139691)(https://tva1.sinaimg.cn/large/008i3skNgy1gw342l0hbvj31hd0u07bh.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1SXhetg7-1636795139692)(https://tva1.sinaimg.cn/large/008i3skNgy1gw345kthtuj31is0u0afy.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wup2NGca-1636795139693)(https://tva1.sinaimg.cn/large/008i3skNgy1gw346cpbjzj319r0u044m.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0DrGgG0-1636795139695)(https://tva1.sinaimg.cn/large/008i3skNgy1gw349xaiijj31rm0u0jxd.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-At7EYUca-1636795139696)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34azup3sj31ow0u0dlj.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gGapLQbC-1636795139697)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34dgn018j321r0u0dn7.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GATID0SJ-1636795139698)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34ftgqvej321y0psdm7.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f8UdJXOt-1636795139701)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34hyt8s3j31ws0u0afz.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kNDHg54h-1636795139703)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34jmrli6j31xj0u079n.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b6rLQHri-1636795139704)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34mgkrxyj31gg0okjvw.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DpZm72X7-1636795139706)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34og35cjj31qc0u0th2.jpg)]
以行序为主序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HKbtJ2Fl-1636795139708)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34q5oyz8j31hd0u0af0.jpg)]
以列序为主序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XaOdATbq-1636795139709)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34qckjtfj31k90u0acu.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G70POmC5-1636795139710)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34s7qdfaj31b90u0afz.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K2AZruPt-1636795139714)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34v8q0mqj31id0u043t.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WqXpOAes-1636795139715)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34yh1j6qj31o30u0gr4.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDkUUZ4X-1636795139717)(https://tva1.sinaimg.cn/large/008i3skNgy1gw34ytn6kcj31ox0u078b.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oyMBNvX8-1636795139718)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3519lnpcj31mv0u0jy6.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HxdDkgfp-1636795139720)(https://tva1.sinaimg.cn/large/008i3skNgy1gw355qonuzj31cc0u0q8x.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pnKmbvYS-1636795139721)(https://tva1.sinaimg.cn/large/008i3skNgy1gw358nch9nj31vk0qa796.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hp7P44FQ-1636795139724)(https://tva1.sinaimg.cn/large/008i3skNgy1gw35b22kd8j31ii0u0wk5.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RJfkllEm-1636795139725)(https://tva1.sinaimg.cn/large/008i3skNgy1gw35e2uk2ij31km0u0q9t.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ALlyXVrw-1636795139726)(https://tva1.sinaimg.cn/large/008i3skNgy1gw35gdo4kkj31ko0u00yn.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUDSc53i-1636795139728)(https://tva1.sinaimg.cn/large/008i3skNgy1gw35kx3p01j31js0u0tf1.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HE7Q1fdX-1636795139730)(https://tva1.sinaimg.cn/large/008i3skNgy1gw35mx0oikj31fq0q8td2.jpg)]
三元组顺序表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aCy5r3U6-1636795139731)(https://tva1.sinaimg.cn/large/008i3skNgy1gw35pwy5vnj31i00u0qah.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eb5L4qGC-1636795139733)(https://tva1.sinaimg.cn/large/008i3skNgy1gw35rflxxmj31kw0u0gsz.jpg)]
链式存储结构-十字链表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yf9Sb9Md-1636795139736)(https://tva1.sinaimg.cn/large/008i3skNgy1gw36mvm6c4j31cr0u0n2k.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K2MlDopF-1636795139738)(https://tva1.sinaimg.cn/large/008i3skNgy1gw36pnfeuxj312a0u0gnk.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aYh6A2G0-1636795139739)(https://tva1.sinaimg.cn/large/008i3skNgy1gw36s6mwrnj31oe0fyn04.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ozioaPhw-1636795139741)(https://tva1.sinaimg.cn/large/008i3skNgy1gw36vn6rl4j31pz0u0tf8.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TwlduAPC-1636795139742)(https://tva1.sinaimg.cn/large/008i3skNgy1gw36yfwhjmj31b40u0tcy.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mHA1K7Dl-1636795139744)(https://tva1.sinaimg.cn/large/008i3skNgy1gw36zyvlo0j31jv0u0qap.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-decN6OE2-1636795139746)(https://tva1.sinaimg.cn/large/008i3skNgy1gw370qgqgbj31e70u042e.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wrnm4w3o-1636795139746)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3724keg8j31gt0u00zt.jpg)]
广义表的基本运算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CjO9yDap-1636795139748)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3757amwoj31f70u0ted.jpg)]
待学习:
B树和B+树
B站上西北大学耿老师讲的树那一章的课程
定义: 1、有且只有一个称为根的节点
2、有若干个互不相交的子树,这些子树本身也是一棵树
通俗定义:1、树是由节点和边组成
2、每个节点只有一个父节点但可以有多个子节点
3、但有一个节点例外,该节点没有父节点,此节点称为根节点
专业术语
节点
子孙
深度:从根节点到最底层节点的层数称之为深度 —类似楼层
**叶子节点:**没有子节点的节点
非终端节点:实际就是非叶子节点
根节点
**度 :**子节点的个数称为度
1、一般树:任意一个子节点的个数都不受限制
2、二叉树:任意一个节点的子节点的个数最多是2个,且子节点的位置不可更改!
二叉树的分类:
1、一般二叉树
2、满二叉树:在不增加树的层数前提下,无法再多添加一个节点的二叉树就是满二叉树
3、完全二叉树:如果只是删除了满二叉树最底层最右边的连续若干个节点,这样形成的二叉树他就是完全二叉树
3、森林:n个互不相交的树的集合
3)、树的存储
树的存储: 非线性–>线性
(1)、二叉树的存储:
连续存储(完全二叉树)
链式存储
(2)、一般树的存储
存指针域,找双亲容易,找孩子难
孩子表示法
双亲孩子表示法
求父节点和子节点都很方便
二叉树表示法
把一个普通树转化成二叉树对存储
具体转换方法:
设法保证任意一个节点左指针域指向它的第一个孩子,右指针域指向它的兄弟,只要能满足此条件,就能把一个普通数转化成一个二叉树
将树转化成二叉树
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVDBg3XJ-1636795139751)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3e0egz8sj31hh0u0dmn.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zMTUugBg-1636795139752)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3e48r3f9j31gd0u0gr6.jpg)]
口诀:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQiU3RkU-1636795139753)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3e4th063j30w4062wfa.jpg)]
二叉树转化成树
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iav1jHoX-1636795139756)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3e5igffqj31dp0u0dll.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OFsgLhsZ-1636795139757)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cjz9xuj31ol0u0zps.jpg)]
森林转成二叉树
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sb3DUMzY-1636795139760)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3e9nrwn9j31ps0u0ten.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1JoFn8Tr-1636795139761)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3eam0dgwj31nw0u042s.jpg)]
二叉树转成森林
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DT3XJaSz-1636795139762)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3ee7y6p5j31rb0u0n39.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5dbDQY4g-1636795139763)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3efn8vltj31rq0u0wjh.jpg)]
森林的存储
先把森林转化为二叉树,再存储二叉树
1、先序遍历
先访问根节点
再先访问左子树
再先序访问右子树
2、中序遍历
中序遍历左子树
在访问根节点
再中序遍历右子树
3、后序遍历
中序遍历左子树
中序遍历右子树
在访问根节点
4、已知两种遍历序列求原始二叉树
通过 先序+中序 or 中序+后续 可以唯一的还原一个二叉树
通过 先序+后续 无法实现还原二叉树
5、先序+中序 --> 还原二叉树
先序:ABCDEFGH
中序:BDCEAFHG
求后续?
例题一:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmZUhM5A-1636795139766)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cktw7fj31jn0u042m.jpg)]
例题二:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jGm4iljX-1636795139770)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97ctb0igj31kn0u0n2x.jpg)]
5、中序+后序 --> 还原二叉树
中序:BDCEAFHG
后序:BECBHGFA
求先续?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cdDLEYEk-1636795139771)(https://tva1.sinaimg.cn/large/008i3skNgy1gv9b694xj6j61ti0oe0xg02.jpg)]
#include
#include
struct BTNode
{
int data;
struct BTNode *pLchild; // p是指针 L是左 child是孩子
struct BTNode *pRchild; // p是指针 R是右孩 child是孩子
};
struct BTNode * CreateBTree(){
struct BTNode *pA = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode *pB = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode *pC = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode *pD = (struct BTNode *)malloc(sizeof(struct BTNode));
struct BTNode *pE = (struct BTNode *)malloc(sizeof(struct BTNode));
pA->data = 'A';
pB->data = 'B';
pC->data = 'C';
pD->data = 'D';
pE->data = 'E';
pA->pLchild = pB;
pA->pRchild = pC;
pB->pLchild = pB->pRchild =NULL;
pC->pLchild =pD;
pC->pRchild =NULL;
pD->pLchild = NULL;
pD->pRchild = pE;
pE->pLchild = pE->pRchild = NULL;
return pA;
}
void PreTraverseBTree(struct BTNode *pT){
if (NULL != pT)
{
/*
伪算法
1、先根节点:pT
2、再先左子树:pT->pLchild代表挣个左子树
3、再先右子树
*/
// 1、先根节点:pT
printf("%c\n",pT->data);
// 2、再先左子树
if (NULL != pT->pLchild)
{
PreTraverseBTree(pT->pLchild);
}
// 3、再先右子树
if (NULL != pT->pRchild)
{
PreTraverseBTree(pT->pRchild);
}
}
}
void InTraverseBTree(struct BTNode *pT){
if (NULL != pT)
{
//1、先序遍历左子树
if (NULL != pT->pLchild)
{
InTraverseBTree(pT->pLchild);
}
//2、访问根节点
printf("%c\n",pT->data);
//3、中序遍历右子树
if (NULL != pT->pRchild)
{
InTraverseBTree(pT->pRchild);
}
}
}
void PostTraverseBTree(struct BTNode *pT){
if (NULL != pT)
{
//1、先序遍历左子树
if (NULL != pT->pLchild)
{
PostTraverseBTree(pT->pLchild);
}
//2、中序遍历右子树
if (NULL != pT->pRchild)
{
PostTraverseBTree(pT->pRchild);
}
//3、访问根节点
printf("%c\n",pT->data);
}
}
int main(){
struct BTNode *pT = CreateBTree(); // 创建二叉树
// 非线性转话成线性才能输出,先序方式输出
// PreTraverseBTree(pT);
// InTraverseBTree(pT);
PostTraverseBTree(pT);
return 0;
}
复制二叉树
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aN57AmeX-1636795139772)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3cvf3m6oj31m50u0jyd.jpg)]
计算机二叉树的深度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nUKnvW8w-1636795139773)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3d07ike8j31gy0u00zr.jpg)]
计算二叉树的节点总个数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-blMoaQAO-1636795139778)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cojpx6j31ix0u0jxm.jpg)]
计算二叉树叶子结点总个数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6S89CZLg-1636795139779)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3dbuk5vdj31pv0u0ahf.jpg)]
(1)、定义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IskrElWM-1636795139782)(https://tva1.sinaimg.cn/large/008i3skNgy1gvu4bwd7a3j31hu0oygqy.jpg)]
(2)、案例演示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LMPsWtCS-1636795139784)(https://tva1.sinaimg.cn/large/008i3skNgy1gvu5ixvkg9j319x0u041s.jpg)]
(3)、标志域
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Qj69fqI-1636795139785)(https://tva1.sinaimg.cn/large/008i3skNgy1gvu5lbmefkj31lv0u0afp.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4zDxTMru-1636795139786)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cl99loj317y0sktc1.jpg)]
练习题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gcFPnEzG-1636795139787)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3dlft3hfj318p0u0tb5.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXTjRoNp-1636795139788)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3dlrvk0vj31k60u0dk8.jpg)]
解决上述指向空的问题,采用增设一个头结点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UvIXPcfl-1636795139789)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3dl5s3skj31i60u07b0.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-429oPBy8-1636795139790)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cm90aij31e40u0n7s.jpg)]
引子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZQpKcn6j-1636795139790)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3ess7itdj31mz0u00yx.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TyClDqoO-1636795139793)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3et7vcapj31h00u0tf9.jpg)]
路径
节结点的路径长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-In0LQ20J-1636795139794)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbcts56d2j31o20u0dkq.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AQL4m4UR-1636795139795)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3ew5n688j31o20u0q8v.jpg)]
树的路径长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SKvi70oJ-1636795139797)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3expygyqj31ia0u0q8o.jpg)]
注意:完全二叉树不一定是最短路径,非完全二叉树也可成为最短路径
权值
节点的带权路径长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E6tzbS2j-1636795139797)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cvj932j31p00hiq6e.jpg)]
树的带权路径长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-locNP0RR-1636795139799)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3f58ht7zj31rs0kwwih.jpg)]
带权二叉树的计算
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ssKLTW9K-1636795139800)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3f7sv0qwj31hw0u043a.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PpdKq0cM-1636795139801)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d19p59j31j20u0gsa.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fk8V4Brk-1636795139802)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97clu0hjj31o00u0agg.jpg)]
结论:
1、满二叉树不一定是哈夫曼树
2、具有相同带权节点的哈夫曼树并不唯一
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PqlB3DO0-1636795139803)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3flrx39ij31nf0u045l.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rVl2072n-1636795139804)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3foa0hl8j31rx0u046m.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAN5FPX6-1636795139805)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cnmn3aj31lt0u0n33.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RlZ0x865-1636795139806)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3x9oyvubj31he0u0qaw.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2mBOBoxQ-1636795139809)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cmo45rj31fb0u0afj.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SwaOVBQF-1636795139809)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3xe6ptsej31rm0u0zqs.jpg)]
采用顺序存储结构-一维结构数组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gqx5zCMg-1636795139810)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3xm8cssvj31la0u0n2i.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A6oHHTdt-1636795139811)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cqul8hj312l0u0mzv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qYOA11Nk-1636795139812)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3xlm1bx0j312u0u0go8.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bCW2fK8D-1636795139813)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3xlwr83uj313i0u0dil.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dAquy02C-1636795139814)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cv3x2uj31350u0win.jpg)]
初始化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NhcAPbd6-1636795139815)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3xprxqhgj318y0d8ac5.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlhqwJDU-1636795139816)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cp2dq2j31ie0u0agm.jpg)]
合并产生新节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IBAsRy8F-1636795139818)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3xs1fhp2j31v40n8n3p.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a96fUOS5-1636795139819)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3xug57s5j31pk0u0wlk.jpg)]
例子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deOzXGvp-1636795139820)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97co390uj31bs0u0aev.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9mR0Eu83-1636795139821)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97ctoj4nj31i20u0jvy.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2VjOsuci-1636795139822)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3y2ualmvj31oh0u0wjz.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntNqMORy-1636795139824)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cn692ej31jg0u0442.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nfyH2Mrh-1636795139825)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3y5a70iej31lw0u0th3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GMkEZK4k-1636795139826)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d3jz7yj31bk0u043c.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCSncepF-1636795139827)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3ybtvpyrj31xm0t27ct.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VkiHjRNS-1636795139829)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3yd3fyu0j312o0bgwg8.jpg)]
例题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tJMWxbp4-1636795139830)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3yer7lm2j31da0kmtc3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0WZPCE6G-1636795139833)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3yezhfzwj31fb0u0q61.jpg)]
哈夫曼编码的算法实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a1DJrpw3-1636795139834)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3yicun5fj31pm0u0n2k.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TGghD0jX-1636795139835)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3yq62p8sj31ig0u0jzb.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hBMubbyz-1636795139836)(https://tva1.sinaimg.cn/large/008i3skNgy1gw3yqkgnnmj31a10u0qat.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QUToWZDT-1636795139837)(https://tva1.sinaimg.cn/large/008i3skNgy1gw40fdll0xj31hi0u0agp.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QIE2zjod-1636795139838)(https://tva1.sinaimg.cn/large/008i3skNgy1gw40i3w8hkj31da0u0k2j.jpg)]
编码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P9Ne7Riv-1636795139839)(https://tva1.sinaimg.cn/large/008i3skNgy1gw40o0irfgj31900mstbi.jpg)]
解码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RUV2KxqH-1636795139840)(https://tva1.sinaimg.cn/large/008i3skNgy1gw40p86izcj31ei0rq42j.jpg)]
例子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RqxJZflr-1636795139841)(https://tva1.sinaimg.cn/large/008i3skNgy1gw40r72op5j31ex0u0agk.jpg)]
图
无向图
有向图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0KAWeBVl-1636795139842)(https://tva1.sinaimg.cn/large/008i3skNgy1gw40ts0982j31dd0u0jvv.jpg)]
完全图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JvIVLqe9-1636795139844)(https://tva1.sinaimg.cn/large/008i3skNgy1gw40y2ksopj31l40u0q6v.jpg)]
稀疏图
稠密图
网
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D7iaEa5T-1636795139844)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cwhuqej31r00mgwie.jpg)]
邻接
关联(依附)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GitcdQ22-1636795139846)(https://tva1.sinaimg.cn/large/008i3skNgy1gw48psdi56j31g60l00x7.jpg)]
定点的度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxnbXHQa-1636795139848)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cpib6lj31ix0u0ahk.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JdCip1Sh-1636795139849)(https://tva1.sinaimg.cn/large/008i3skNgy1gw48tft58cj31860u077m.jpg)]
路径
路径长度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QUPrkdrp-1636795139850)(https://tva1.sinaimg.cn/large/008i3skNgy1gw48xab4gwj31az0u0n13.jpg)]
路径
路径长度
回路
简单路径
简单回路径(简单环)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q51wt8IO-1636795139851)(https://tva1.sinaimg.cn/large/008i3skNgy1gw49147l4rj31n90u0qa4.jpg)]
连通图(强连通图)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rrHkMCKG-1636795139851)(https://tva1.sinaimg.cn/large/008i3skNgy1gw493u628cj31fh0u0grr.jpg)]
权与网
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hwA1T8L8-1636795139852)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cs8i16j31ty0h60vx.jpg)]
子图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-npngBnFi-1636795139854)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d5dzuwj31mh0u0n27.jpg)]
连通分量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xyddCsKP-1636795139855)(https://tva1.sinaimg.cn/large/008i3skNgy1gw49z4xv7pj31ol0u0tf3.jpg)]
强连通分量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xLPM18l5-1636795139856)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4a17xbakj31ke0la778.jpg)]
极小连通子图
生成树
生成森林
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bAvnEHl2-1636795139857)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4a5bjkwzj31i20u0n2y.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b3DcGBKD-1636795139858)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4ayekgflj31mj0u0jxx.jpg)]
图的邻接矩阵
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wMrtsSKI-1636795139859)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97crfnvyj31fh0u0443.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwaM6f0p-1636795139861)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cxklqqj31mn0u0jy3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D43PgUfk-1636795139863)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4ce8drwyj31h80u0grs.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tx2jzVes-1636795139864)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4ce5q9kfj31bx0u0q8c.jpg)]
网(有权图)的邻接矩阵
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zYN0Q58c-1636795139865)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4cenpthyj31mj0u0gr3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kR9UC0FG-1636795139866)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4cnvmzztj31g30u0wld.jpg)]
无向邻接矩阵的创建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VoHJY2HZ-1636795139867)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4crgg7s3j31dx0u0797.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BUAHjLd0-1636795139868)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4cur9r1mj31ir0u0tft.jpg)]
找顶点下标
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IHHet2Jq-1636795139869)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4d1l9s0yj31nk0rg42e.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ao4w4O9L-1636795139870)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4d2jxjk7j320k0s8agu.jpg)]
从无向网-> 无向图与有向网的建立
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G797SI3N-1636795139871)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4d8rjwpmj31ej0u0gsp.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCq0nChk-1636795139873)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4da818huj31gm0u00zh.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nb2ROGPt-1636795139874)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4ddxx7dvj31si0lgtdl.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ONW0iA12-1636795139875)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4j65vsudj31qo0u0k0e.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XR36xsKV-1636795139877)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4jfg2vbxj31m10u0grs.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sdGMpL1F-1636795139878)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4jm7m90sj31rn0u0qan.jpg)]
使用邻接表实现有向网
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3xrka8I-1636795139879)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4jr1uw4tj31fd0u0q8h.jpg)]
图的邻接表算法及代码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KD6yLRsA-1636795139880)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d25yb6j31it0u0jys.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qn7PiuxO-1636795139883)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4jxr5kvdj31hn0u0ter.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Se9j8fJF-1636795139885)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4jz8nklvj31ao0ngq73.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a2LI07fA-1636795139886)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d0r9ndj31ig0u011h.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yaRl5Y0R-1636795139887)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4k5hkscej31op0u0100.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ASTuoLwh-1636795139887)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4k7moxtfj31ly0tan5g.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XgB6ccSQ-1636795139889)(https://tva1.sinaimg.cn/large/008i3skNgy1gw4kuhzop1j31na0u0guc.jpg)]
邻接表特点:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JneeRHKv-1636795139889)(https://tva1.sinaimg.cn/large/008i3skNgy1gw53mzltu9j31m10u00zw.jpg)]
邻接矩阵与邻接表的关系与区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oKQ68a8o-1636795139891)(https://tva1.sinaimg.cn/large/008i3skNgy1gw53p9be2lj31ue0tewl4.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KDgT3gQy-1636795139892)(https://tva1.sinaimg.cn/large/008i3skNgy1gw53sy3wy4j31q80u0gs1.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8GT7omT2-1636795139893)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cq6iqvj31ed0u0gpz.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V9fBJEbp-1636795139894)(https://tva1.sinaimg.cn/large/008i3skNgy1gw54kfug17j31fc0u0n2j.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8LtqXrat-1636795139894)(https://tva1.sinaimg.cn/large/008i3skNgy1gw55um5sdtj31iq0u0jyv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y1GF4Waa-1636795139895)(https://tva1.sinaimg.cn/large/008i3skNgy1gw55zj3gg2j31qw0u0grl.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S4MZE3Nk-1636795139896)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cw113rj31ni0u0tf2.jpg)]
Depth_First Search – DFS 一条道走到黑
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gBaUlRMi-1636795139897)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5691882ij31af0u0dkc.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1Tdq8UB-1636795139898)(https://tva1.sinaimg.cn/large/008i3skNgy1gw56dq6z2tj31lo0u0n2k.jpg)]
深度优选遍历算法实现
邻接矩阵表示无向图深度遍历实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l483uFKt-1636795139899)(https://tva1.sinaimg.cn/large/008i3skNgy1gw56kfwwt2j31jn0u0q8c.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B104i73t-1636795139900)(https://tva1.sinaimg.cn/large/008i3skNgy1gw56ojihh1j31rm0u0n59.jpg)]
DFS算法效率分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yezemTmP-1636795139901)(https://tva1.sinaimg.cn/large/008i3skNgy1gw579huv49j31mj0u0wlv.jpg)]
非连通图的深度优选遍历
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5s4VL6Lw-1636795139903)(https://tva1.sinaimg.cn/large/008i3skNgy1gw57d8ho8dj31qe0rm0wm.jpg)]
Breadth_First Search – BFS
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uvNm5Ybw-1636795139905)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97czqqt7j31qs0tuq89.jpg)]
非连通图的广度优先遍历
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jk20Y5Ng-1636795139906)(https://tva1.sinaimg.cn/large/008i3skNgy1gw57hi6wsij31is0ssdjx.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FUmxitEe-1636795139907)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5m3jq1ekj31h40u0q8m.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TU3NSFTh-1636795139908)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5m94ic44j31670u0443.jpg)]
BSF算法效率分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TYCiYkRE-1636795139909)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5mbb5882j31lm0k2tei.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MqmDLriz-1636795139910)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5mdfbo1sj31qy0r4n2a.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1RlMpybS-1636795139912)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5mhwi319j31990u0wm5.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-454L7NMK-1636795139913)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5mjraubfj31m40quq8v.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1p1Bxa4C-1636795139914)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6f2mrj0lj31i60u0n44.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQpcukEy-1636795139915)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6f430ca9j31hu0u0n3w.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OOOKbX4r-1636795139916)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d96citj31j30u010o.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S2k5Wo8p-1636795139917)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6fddgozfj31ld0u0q8y.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fh8YbqTg-1636795139918)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6ffhikqjj31ff0u0q8g.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lTwGVEc-1636795139919)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6gbnno67j31md0u0afq.jpg)]
克鲁斯卡尔-kruskal
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfM9hh22-1636795139921)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6ghih5jfj31el0u0qaf.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v3YK5odf-1636795139923)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6gk0aywmj31oc0u0gql.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eLMQarTR-1636795139924)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6gnxild8j31k2092767.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1km6ngQo-1636795139926)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6go9sezbj315l0u0tgz.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DfqTIVgF-1636795139927)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6gp31cvzj31nc0u0q9q.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eY0N8aIT-1636795139928)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6gqsnzwsj31ym0l0wj6.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuRw3O1Q-1636795139929)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6gs606d7j31pv0u0n20.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YumQN1yj-1636795139931)(https://tva1.sinaimg.cn/large/008i3skNgy1gw6gtpam14j31to0u0wle.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lGHL50yB-1636795139933)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d9lmmjj31m60n80wv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fP7Yaojy-1636795139934)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7qakvnkxj31no068q3w.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gusK3mVP-1636795139936)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7q5725mzj31er0u0gsv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K2fvGEMS-1636795139937)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7q5q0nr9j31d00u00zr.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q1UpzlXR-1636795139938)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7qahz7etj31f00u046q.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8y3KLcge-1636795139939)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7qh2q4dej31120iqq4t.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9qrBhjeA-1636795139941)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7qi35r4aj31gb0u0wkl.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q05KTG8D-1636795139943)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97crvxdhj31gl0u0ahy.jpg)]
有向无环图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-woQUY0L8-1636795139943)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7qojgl10j31ej0u0wk3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6YXj9RSd-1636795139944)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7re22aiij31fj0u0ahf.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nmyYJGfs-1636795139945)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7reae5vyj31ym0u0qab.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-43wowiWJ-1636795139947)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7rhnl92hj313c0u00vw.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-njaaHoTo-1636795139948)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cyc18oj31540u0wiu.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePuRFN7X-1636795139950)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7rio80inj31150u0ae7.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AJMQ5FZM-1636795139952)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97csth07j31ek0u0aej.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DnNhfG8F-1636795139953)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7rjsncxej31ib0u0q9h.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-96clmrOK-1636795139954)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d8ofkwj31fv0u00zo.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZC7ehIew-1636795139956)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7rugg5noj31em0u0tff.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zon1JDBG-1636795139958)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7ryzg8qqj31lv0u0444.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3RwlClEx-1636795139959)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7s04zlv4j31u30u0jxy.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jks60yKj-1636795139960)(https://tva1.sinaimg.cn/large/008i3skNgy1gw7s9bsisoj31l40u0jyi.jpg)]
前言
线性表
1、顺序查找
2、折半查找
3、分块查找(索引查找)
树
4、二叉排序树
5、红黑树
6、B-树
7、B+树
8、键树
散列表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vCk87IhD-1636795139962)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbg6nrfibj31iy0u0wkz.jpg)]
形式一:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gDqywgTA-1636795139963)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d2l1d1j31jd0u0n49.jpg)]
形式2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ie64JWrs-1636795139964)(https://tva1.sinaimg.cn/large/008i3skNgy1gw95m0iionj31gu0roadt.jpg)]
形式3
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f1kV24x7-1636795139967)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d790qdj31ss0u0444.jpg)]
最牛改进方法-增加一个哨兵
不用判断是否越界
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRUtWrzw-1636795139968)(https://tva1.sinaimg.cn/large/008i3skNgy1gw95o6pg1sj31680gmmzp.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qAA4B7bG-1636795139969)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97da31t8j31mn0u0n3r.jpg)]
演算过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ivR7VTi5-1636795139971)(https://tva1.sinaimg.cn/large/008i3skNgy1gw957ss39fj31t40la780.jpg)]
思想
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4fXcqhCV-1636795139972)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d1ofi4j31kh0u0tfw.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hE6IQPrt-1636795139975)(https://tva1.sinaimg.cn/large/008i3skNgy1gw95gk0bb1j31gk0u0jz7.jpg)]
补充-递归算法实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XqvCXkv8-1636795139976)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cz39bij31fz0u0gr6.jpg)]
折半查找性能分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fjHGVB8B-1636795139980)(https://tva1.sinaimg.cn/large/008i3skNgy1gw965vz9jnj31ro0u0jx3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Be2BiZq-1636795139983)(https://tva1.sinaimg.cn/large/008i3skNgy1gw96fxj75rj31jp0u0q9g.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WgsPYUKu-1636795139984)(https://tva1.sinaimg.cn/large/008i3skNgy1gw96ljcj0aj31lj0u0tgk.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0chcGotP-1636795139985)(https://tva1.sinaimg.cn/large/008i3skNgy1gw96p985mej31c20u0jwn.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-abuDuyzS-1636795139988)(https://tva1.sinaimg.cn/large/008i3skNgy1gw96pl7ax3j31qm0mu44y.jpg)]
查找方法比较
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y2OPfXQw-1636795139989)(https://tva1.sinaimg.cn/large/008i3skNgy1gw96r01snej31d20pq78c.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RYDOQR0u-1636795139990)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d6cgsjj31f90u044j.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m80Ad915-1636795139991)(https://tva1.sinaimg.cn/large/008i3skNgy1gw978tvh2ej31s60s87bm.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RMryO6QN-1636795139993)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d86vg8j31fu0l6go3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JOW52gSJ-1636795139995)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97abadf6j31500kgq64.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vE9SLw8p-1636795139996)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97b2pr70j30tk0kg40h.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bf2hjjfu-1636795139997)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9qfejpelj31iq0u0wkc.jpg)]
二叉排序树的操作-查找
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iRCtS82U-1636795139998)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9qkv9at3j31bx0u0dlq.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z8tMQjvL-1636795140000)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9qqct3ltj31pv0u0dna.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n81cszSw-1636795140001)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9qu7906mj31lr0u0dn4.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tc6aZoiB-1636795140002)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9r42kl4xj31q20suad8.jpg)]
二叉排序树的生成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4WdFfsNG-1636795140003)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9rgb1uh1j31gu0u0gqf.jpg)]
二叉排序树的删除
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qos2d2Sm-1636795140004)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9rgs379yj31oc0u0wmm.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1C8cHEbP-1636795140005)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9rhit5sgj315s0u0djm.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6z7uRsA9-1636795140008)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9romreqtj31jg0u0n3j.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eaIJXkZb-1636795140009)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9rqx45gyj31hy0u0tdb.jpg)]
二叉排序树的删除算法
待补充…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2P7593gZ-1636795140010)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9sff8tfbj31g70u0jyc.jpg)]
引子
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wFjPmIrU-1636795140011)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9sgwliuaj31nm0nwadu.jpg)]
平航二叉树的定义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NR46JC3a-1636795140012)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9sk4xfb8j31wm0t00ys.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0nWzgOqu-1636795140013)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9skyf4aoj31x40nkaf2.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z6jPc9fy-1636795140014)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9sp8vijgj31ih0u0dkd.jpg)]
失衡二叉排序树的分析与调整
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Pbqkn2l-1636795140017)(https://tva1.sinaimg.cn/large/008i3skNgy1gw9ssg03c3j31fz0u07a3.jpg)]
失衡
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QXsalzzq-1636795140018)(https://tva1.sinaimg.cn/large/008i3skNgy1gwa4og5uvaj31os0u044g.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-poxrN4pL-1636795140020)(https://tva1.sinaimg.cn/large/008i3skNgy1gwa4r0a7dtj31cp0u0q8a.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WKEYCuJf-1636795140022)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb6p4x1exj317g05mt9v.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JQby4y5c-1636795140024)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb92bitaxj31h50u0dm1.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QInsY8ts-1636795140026)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb93d9zb6j31sw0q4dmn.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WoagtZB8-1636795140027)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb93p8f6gj31sa0me0y1.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MLhJmOM4-1636795140028)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbctto3ttj31sk0u0445.jpg)]
同义词:具有同函数值的多个关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RiizpJmS-1636795140029)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb95c0z9pj31dt0u0dlq.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DwZ6zcmE-1636795140030)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb96s1vp3j31g00u0n3k.jpg)]
直接定址法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HlH3GFRH-1636795140031)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb9axy4qij31ho0u0n3o.jpg)]
除留余数法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BnxfxYmC-1636795140032)(https://tva1.sinaimg.cn/large/008i3skNgy1gwb9cbvdhgj31au0u0aeo.jpg)]
开放地址法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E0jEm1NE-1636795140033)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbaebfowwj31jj0u0gs3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TGNjTh9v-1636795140033)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbal2mc22j31iz0u0dng.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DG1hDRV5-1636795140034)(https://tva1.sinaimg.cn/large/008i3skNgy1gwban01iq0j31bx0u0dnu.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sjQipp8q-1636795140035)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbat377m8j31jl0u00z8.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yukVn9YR-1636795140036)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbats5gxdj317w0qagp0.jpg)]
链地址法 | 拉链法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jyB5ppl6-1636795140038)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbbb4twqrj31ix0u0q8x.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T6GbLLsg-1636795140039)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbbdzcd1ej315i0u0adf.jpg)]
例题:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3iy6hqIr-1636795140041)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbbgqbgj8j31j20u045w.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p4MGpEfp-1636795140043)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbbj9j9kfj31j30u0ai3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I0M4snQn-1636795140044)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbbkc8753j31hu0u0wiv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-an1hf2k5-1636795140047)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbcnkwr3zj31ec0u0wi4.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOfrO1SE-1636795140048)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbcolc2crj31ds0u0wkb.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yA6y0tDs-1636795140051)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbctu73skj31eu0rggof.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iFQlhwRJ-1636795140054)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbcs8surpj31ao0u078a.jpg)]
插入排序
①、直接插入排序
②、折半插入排序
③、希尔排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8IWYD7vx-1636795140056)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5nq8geoej314b0u0wjv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IvEoKPhL-1636795140058)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5nqpkwmgj31ro0kwgqi.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lPD0aBdW-1636795140059)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97db0i50j31pw0kcn0t.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kCHlthtK-1636795140061)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5nt5xmjdj31bc0g042d.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8eCQ5j5W-1636795140062)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97cwz4yxj31lc0fwdj6.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BVZG6PoR-1636795140063)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5nvhlsppj31900sq42z.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tzhLdBXK-1636795140064)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5nwxxhs1j31hg0fg0vm.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j0g0rLwE-1636795140065)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5nxbfns9j314c0l0q5s.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-baIXGEjC-1636795140066)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5nxzpqpfj31fi0u0q8i.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2M09pE3U-1636795140067)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d7pmw2j31mq0oktf5.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaBBdrMh-1636795140068)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97d5xbguj31hc0eg77h.jpg)]
插入法排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8TB0mm5y-1636795140068)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbd81pe83j31m60u0jwe.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JxUWxxPK-1636795140069)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbd8n58r5j31rm0ts0xv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lf3D5wFC-1636795140072)(https://tva1.sinaimg.cn/large/008i3skNgy1gw5o6qbkw6j31c20u0jw3.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EdRuj181-1636795140074)(https://tva1.sinaimg.cn/large/008i3skNgy1gw97dam3x7j31eg0oen0f.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2AH83kX4-1636795140076)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbdbbbl0jj31o00g00v8.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zK2as7Cj-1636795140078)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbdhp9eiej31gn0u0gqi.jpg)]
第一个直接放入即可,后面的[2-n]个按照上述规则插入
改进直接插入法-带哨兵
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IMegMEiA-1636795140079)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbdmi86kuj31ha0u0jxq.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kL76F2tA-1636795140080)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbdqaa4d5j31cd0u00xc.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qSDlJRqX-1636795140081)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbe2f2kzkj316z0u0q7d.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J4SU0LDF-1636795140083)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbe4fwuigj318y0p6423.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TCoFMsOy-1636795140090)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbe4nzgzuj31dq0nkq5i.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fb2pQnBS-1636795140092)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbe64khkfj31gy0te0xx.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PJ2V1rUa-1636795140097)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbegft9qlj31bq0u0agd.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eapAu4Qa-1636795140100)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbermgqwfj31jj0u0dk7.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8BgJt8f-1636795140102)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbeuc85qfj31ie0t278u.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MDJqi5nM-1636795140114)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbev9w58wj31az0u0dmy.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fp5GePjc-1636795140118)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbey7wk4hj31h40lw0wv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqigdX6J-1636795140119)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbeyhiot1j31h40ocdkg.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gdZFz9Hy-1636795140122)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbf01u58vj31p60swgrk.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9u1kIwt6-1636795140123)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbf21015ij31dh0u0tdm.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dfDuJXZP-1636795140125)(/Users/ouyangyansong/Library/Application Support/typora-user-images/image-20211111191623377.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RRgQ7G1e-1636795140126)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbff6yuppj31bl0u0dkl.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RjLsPezo-1636795140126)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbfhgmlr8j31n40i8wis.jpg)]
交换排序
④、冒牌排序
⑤、快速排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYVJQSZ9-1636795140127)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbhjkqfljj31n70u0dln.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gT4Gs1ND-1636795140128)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbhp5ilytj312j0u0aee.jpg)]
C语言实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EM7unQd9-1636795140129)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbhr2ue6zj318t0u0437.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zV2GY9eL-1636795140130)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbhs3jt74j31ms0au76e.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUCrwULV-1636795140130)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbhtgqrccj31g90u0agc.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8JarAl2N-1636795140131)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbhurtzujj31cj0u079k.jpg)]
Java实现
#include<stdio.h>
void main(){
int arr[] = {3,9,-1,10,-2};
int j;
int i;
int t; //临时变量
int arrLen = sizeof(arr)/sizeof(int); //数组的长度
for(i=0;i<arrLen-1;i++){
for(j=0;j<arrLen-1-i;j++){ //4是递减
if(arr[j]>arr[j+1]){ //如果前面的数大于后面的就交换
t = arr[j];
arr[j] = arr[j+1];
arr[j+1] = t;
}
}
}
//结果
for(j=0;j<5;j++){
printf("%d ",arr[j]);
}
getchar();
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XlwIvfCQ-1636795140132)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbi35bx5lj31910u077x.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nbQ7WWQw-1636795140133)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbi3ekggtj31j80t0tdo.jpg)]
快速排序-改进的交换排序-递归思想
1、找pivot 中心元素
2、找所有比pivot小的元素一律前放,找比它大的元素一律后放
3、此时,形成两个子表
4、最两个字表进行上述操作,继续划分
1、找pivot 中心元素
2、找所有比pivot小的元素一律前放,找比它大的元素一律后放
3、此时,形成两个子表
4、直到每个字表中只剩下一个元素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xZUCMWQS-1636795140134)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbi9aue8oj31c10u0n2g.jpg)]
不可取方式-太浪费空间了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NUOyU87j-1636795140135)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbiehgbwij31i90u0ajh.jpg)]
快速排序代码实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6eHnF5GA-1636795140136)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbk1pnodzj31fx0u0tfl.jpg)]
快速排序时间复杂度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bRRsaJys-1636795140137)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbl1jalr0j31pu0oun1i.jpg)]
快速排序空间复杂度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-522xGywL-1636795140138)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbl15lle3j31oa0s6tds.jpg)]
快速排序算法分析:
1、不稳定性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1QzdKb1t-1636795140140)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbl0kmhqzj317a0gaq5e.jpg)]
2、不是自然排序(数据越乱反而越好)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNvEtUcI-1636795140140)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbl1yu60wj31k20i2q6b.jpg)]
排序不均衡 ,等同于冒泡排序了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q5sn5GT6-1636795140141)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbl2gq4e1j31h60u00zh.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iaxNt3Ip-1636795140142)(https://tva1.sinaimg.cn/large/008i3skNgy1gwbl2pkbkqj31p90u0wlr.jpg)]
选择排序
⑥、简单选择排序
⑦、树形选择排序
⑧、堆排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Ab1vrXO-1636795140143)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc1plqsagj31rc0u0jz4.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V05caB0H-1636795140144)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc1ppyvytj31ic0u0wir.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cMNrNYK4-1636795140145)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc1uach8oj31i80u0n26.jpg)]
堆定义
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fHWHY1r5-1636795140146)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc26x7ea9j31mp0u043z.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i35a7azT-1636795140147)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc26b4c9gj31c20u0ae9.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUDGSksw-1636795140148)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc263z9anj31e80u079b.jpg)]
什么是堆排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7z5bkGA-1636795140149)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc29ihef6j31xc0iun1r.jpg)]
堆排序2个问题
1、建立堆
2、输出堆顶元素后,调整剩下的元素从新成为一个堆
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bZJEn0jL-1636795140150)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc28q6xobj31mo0h0n0g.jpg)]
堆的调整
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pPk2cxhA-1636795140152)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc2bbbgjjj31fm05mq46.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OO7Er0bt-1636795140152)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc2f2w208j31zm0u045f.jpg)]
此时再重复上述操作,将27输出,97调到堆顶元素,97不断比较
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xc96negS-1636795140153)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc2m65m8pj311a09i0tz.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PVvx7qtT-1636795140154)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc3rp7l1fj31c80u07bm.jpg)]
堆的建立
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Etf3Frof-1636795140155)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc3v7rvevj31ps0n8ae1.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFkKtNTB-1636795140156)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc3wn2schj31la0u078p.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q7k9Un1D-1636795140162)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc3yux002j31oj0u0td8.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RLwYD5Cs-1636795140164)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc3zorbayj31ly0u0431.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5R33GekE-1636795140165)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc403qa3bj31fc0u0797.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2GHSfpvc-1636795140166)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc41fpcnrj31bq0u0jwn.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cf96RJp7-1636795140167)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc46yptl8j31ck0u00xt.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4wMx0OQQ-1636795140168)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc489uo80j31k40mkjv0.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TEIPE9TI-1636795140170)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc4gmmhjaj31g70u0tei.jpg)]
归并排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YXrRmLX2-1636795140172)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc6ptutx0j31w60leq7l.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zro0cvrW-1636795140173)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc6pnlov2j31dv0u0q7g.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nDUaIMZ0-1636795140177)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc6r35ziej31qy0u0jul.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMNaavtE-1636795140178)(/Users/ouyangyansong/Library/Application Support/typora-user-images/image-20211112110305891.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lut4k3jH-1636795140179)(/Users/ouyangyansong/Library/Application Support/typora-user-images/image-20211112110540651.png)]
归并排序的算法
待补充…
归并排序的效率分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1EdquutB-1636795140180)(/Users/ouyangyansong/Library/Application Support/typora-user-images/image-20211112110838631.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4G8Owmgp-1636795140181)(/Users/ouyangyansong/Library/Application Support/typora-user-images/image-20211112110935379.png)]
⑩基数排序
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0782Qf8l-1636795140182)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc753691yj31zk0oejwv.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0x26uSrA-1636795140183)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc76w05paj31ii0u0agn.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hnLDqm2E-1636795140184)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc7841rssj31h10u0tfb.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ip67OBID-1636795140185)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc78uvjidj31f90u0jy6.jpg)]
例2
一副扑克牌52张,❤A->K 13张,♣A->K 13张,♢A->K 13张,♠A->K 13张 总共52张,需先按照花色大小进行排序
排序步骤:
第一趟分配:
准备4个盒子,按照4种(❤->♣->♢->♠)花色顺序装入
第一趟收集
收集后发现已经按花色排序了
第二趟分配
准备14个盒子,安装A->K大小进行放入
第二趟收集
收集完成后发现,扑克牌排序完成(花色、大小)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qa2KuSUy-1636795140185)(https://tva1.sinaimg.cn/large/008i3skNgy1gwc8oke1kej31ia0r442a.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sjMbV0gH-1636795140187)(https://tva1.sinaimg.cn/large/008i3skNgy1gwcasnzvmbj31oq0rg78g.jpg)]
链式的基数排序
待补充…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iubSYBzU-1636795140188)(https://tva1.sinaimg.cn/large/008i3skNgy1gwcat6ehtij31f20u0n4j.jpg)]
时间性能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ubhf1vVV-1636795140189)(https://tva1.sinaimg.cn/large/008i3skNgy1gwcawz6y14j31pg0u0n4n.jpg)]
基数排序的缺点:不是所有的情况都适用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-My2iM7JT-1636795140190)(https://tva1.sinaimg.cn/large/008i3skNgy1gwcaz3z0y6j31rc0l0n40.jpg)]
空间性能
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CyyvFtNr-1636795140191)(https://tva1.sinaimg.cn/large/008i3skNgy1gwcb1ht5tij31jv0u0wlf.jpg)]
排序的稳定性
什么是排序的稳定性?
两个关键字的值相等,他们在排序后位置是否变化,如若无变化,则稳定,如若变化,则不稳定。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PY1WZeLW-1636795140192)(https://tva1.sinaimg.cn/large/008i3skNgy1gwcb486mrwj31s60o67as.jpg)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WWfULc28-1636795140193)(https://tva1.sinaimg.cn/large/008i3skNgy1gwcb6rlu7ij31u40no45i.jpg)]
公众号/B站:是叶十三