- 博客(9)
- 收藏
- 关注
原创 数据结构和算法--回溯算法
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。回溯是递归的副产品,只要有递归就会有回溯。回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案。子集问题一个N个数的集合里有多少符合条件的子集。排列问题N个数按一定规则全排列,有几种排列方式。组合问题N个数里面按一定规则找出k个数的集合。切割问题一个字符串按一定规则有几种切割方式。棋盘问题N皇后,解数独等等。...
2022-07-21 11:37:26
320
原创 数据结构--快速排序
算法思想在待排序表L[1…n]中任取⼀个元素pivot作为枢轴(或基准,通常取⾸元素),通过⼀趟排序将待排序表划分为独⽴的两部分L[1…k-1]和L[k+1…k-1]中的所有元素⼩于pivot,L[k+1…n]中的所有元素⼤于等于pivot,则pivot放在了其最终位置L(k)上,这个过程称为⼀次“划分”。然后分别递归地对两个⼦表重复上述过程,直⾄每部分内只有⼀个元素或空为⽌,即所有元素放在了其最终位置上。...
2022-07-14 22:06:32
199
原创 数据结构--冒泡排序
冒泡排序是入门级的算法,但也有一些有趣的玩法。 首先冒泡排序是相当于相邻的数字两两比较,并且规定:“谁大谁站右边”。经过 n−1轮,数字就从小到大排序完成了。整个过程看起来就像一个个气泡不断上浮,这也是“冒泡排序法”名字的由来 一边比较一边向后两两交换,将最大值 / 最小值冒泡到最后一位; 经过优化的写法:使用一个变量记录当前轮次的比较是否发生过交换,如果没有发生交换表示已经有序,不再继续排序; .........
2022-07-13 20:30:06
208
原创 数据结构--希尔排序
希尔排序:先将待排序表分割成若⼲形如 L[i, i + d, i + 2d,…, i + kd] 的“特殊”⼦表,对各个⼦表分别进⾏直接插⼊排序。缩⼩增量d,重复上述过程,直到d=1为⽌。希尔排序:先追求表中元素部分有序,再逐渐逼近全局有序 ;不稳定的算法。...
2022-07-12 21:07:06
224
原创 排序--插入排序
插入算法思想:每次将⼀个待排序的记录按其关键字⼤⼩插⼊到前⾯已排好序的⼦序列中,直到全部记录插⼊完成。稳定算法插入排序有两种写法:算法的稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,A[i]=A[j],而在排序后的序列中,A[i]和A[j]的相对位置不变,则称这种排序算法是稳定的;否则称为不稳定的。...
2022-07-07 20:06:39
199
原创 分块查找-索引顺序查找
分块查找,⼜称索引顺序查找,算法过程如下: ①在索引表中确定待查记录所属的分块(可顺序、可折半) ②在块内顺序查找特点:块内⽆序、块间有序
2022-07-05 21:16:35
583
原创 静态线性表
线性表是具有相同数据类型的n(n≥0)个数据元素的有限 序列,其中n为表长,当n = 0时线性表是一个空表。若用L命名线性表,则其一般表示为L = (a1, a2, … , ai, ai+1, … , an) 2.结果展示
2022-06-21 17:20:01
327
原创 栈的顺序存储实现
数据结构三要素——逻辑结构、数据的运算、存储结构(物理结构)线性表是具有相同数据类型的n(n≥0)个数据元素的有限 序列,其中n为表长,当n = 0时线 性表是一个空表。若用L命名线性表,则其一般表示为 L = (a1, a2, … , ai, ai+1, … , an)栈(Stack)是只允许在一端进行插入或删除操作的线性表......
2022-06-17 22:31:55
306
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人