408第一季 - 数据结构 - 排序II

选择排序

简单选择排序

理解

找最小的元素

怎么找,看图

6和1相比 1小,选1

1和5相比 1小,不用变

1和9相比 1小,不用变

。。。

最后确定1是最小的,然后交换

这里比较了n-1次

然后第二趟比较了n-2次

然后如此重复。。。

7个元素弄了6趟

有点捞啊,这简单选择排序

堆排序

理解

要由下面几个角度看

堆的定义

左右节点都比根要小,而且要完全二叉树,这是叫大根堆

然后这个就是小跟堆

堆的建立

比如给你一堆数字,按照顺序写成完全二叉树

然后我们尝试建立大根堆

首先第一步是倒着从第一个非叶子节点,这里是1或者5,我们先看5

这里5比较一下他们的左右两节点,是4和7,比较谁更大

这里很显然7更大,把7和5交换

然后比较1,9更大,交换

最后调个6,左右比较一下,发现9更大

这里左子树因为交换过了,所以要再次确定是否满足大根堆

最后变成这样,圆满完成了

a

堆的插入

我们在已经变成一个大根堆的情况插入12看看

因为已经是一个大根堆了,我们12只要一直往上比就行了,不用和6比,8下来之后也不用和任何人比。无欲无求了属于是

当然肯定还要和20比一次的一共比了3次

做题
1

树长这个样子,然后和10比一下交换,然后和25比一下,没交换,所以比了2次

b

2

注意这里是依次插入,不是让你建立堆,这出题老头

b

堆的删除

这个也是在堆的基础上删除

准备删除了,这里删除12,因为删除后你要保证是完全二叉树,所以我们只能把7提上去

这里右子树是不用动的

最后变成这样

堆的排序

规则就是不断的删除堆顶就行,这里删9,并确定9是最大的

然后把5替换上去,

然后堆顶动了,要重新进行比较,最后变成

然后找到了第二大的8,后面就一直这样的流程

题目

1

c

然后就是

堆还挺牛逼,都是nlogn

其他的排序

归并排序

理解

常见的是二路归并

这里就是,每2个排个序,然后第二趟给更大的2个排个序,不难理解

然后具体细节是这样的,2个指针分别指向不同组的元素,谁小谁往后移,这里13小,13放最前面,然后指针往后移就行了

然后最后,第二组元素到头了,就把第一组剩余的全部搬抄过去就行,这里抄了个97

题目

1

a

基数排序

理解

注意两个概念就行,分配和收集

还有个队列

核心思路就是,先排个位,再排十位,再排百位

这里是分配,先按照个位数去分配

然后收集,先来后到的情况收,比如这里063后收集083

然后按照收集好的再进行第二次分配,并且按照十位数分配

然后收集,先来后到的情况收

就可以发现十位是顺序的

然后按照百位分配

然后就可以发现,百位是按顺序排的,如果百位数字是一样的,那十位就是按顺序排的,如果百位和十位数字是一样的,那个位是按顺序排的

题目

然后收集一下就好了

c

内部排序算法比较

其他都是顺序和链式都行的

表格记一下

然后还有这个注意下

相关推荐
好易学·数据结构3 小时前
可视化图解算法57:字符串的排列
数据结构·算法·leetcode·面试·笔试·回溯算法·牛客
এ᭄画画的北北5 小时前
力扣-283.移动零
算法·leetcode
2501_924879368 小时前
口罩识别场景误报率↓79%:陌讯多模态融合算法实战解析
人工智能·深度学习·算法·目标检测·智慧城市
Christo38 小时前
TFS-2022《A Novel Data-Driven Approach to Autonomous Fuzzy Clustering》
人工智能·算法·机器学习·支持向量机·tfs
木木子99998 小时前
超平面(Hyperplane)是什么?
算法·机器学习·支持向量机·超平面·hyperplane
星空下的曙光10 小时前
React 虚拟 DOM Diff 算法详解,Vue、Snabbdom 与 React 算法对比
vue.js·算法·react.js
♞沉寂10 小时前
数据结构——双向链表
数据结构·算法·链表
大阳12310 小时前
数据结构2.(双向链表,循环链表及内核链表)
c语言·开发语言·数据结构·学习·算法·链表·嵌入式
掘根10 小时前
【Redis】string字符串
数据结构·数据库·redis
CUC-MenG11 小时前
2025牛客多校第六场 D.漂亮矩阵 K.最大gcd C.栈 L.最小括号串 个人题解
c语言·c++·算法·矩阵