- 博客(26)
- 收藏
- 关注
原创 BFS处理迷宫问题
4.搜到终点后,以终点坐标为索引定位结构体二维数组(记录父节点)记录的父节点不断溯源,直到在结构体二位数组记录的坐标为(-1,-1),即回到原点;eg:假设地图原点为(1,1)将原点入队,原点出队,查找原点四个方向哪个方向没有阻碍且没走过,找到就入队循环往复,直到找到终点或没有路;原因:利用队列先进先出(FIFO)的原理,用来记住下一步该往哪几个方向移动。3.结构体二维数组储存每一步的父节点;2.二维数组记录已走过的路线;
2025-02-24 20:13:04
239
原创 C语言插入排序及其优化
是一种简单直观的排序算法。它通过构建有序序列,将未排序部分的元素插入到已排序部分的正确位置,直到所有元素排序完成。下面是插入排序的关键点及其实现细节。
2024-12-31 15:46:26
605
原创 堆排序——C语言实现
作用:从指定节点开始调整堆,使其满足最大堆的性质。(2) 函数作用:实现堆排序的完整流程。3. 主函数 作用:测试堆排序算法。4. 运行过程假设输入数组为 :通过从最后一个非叶节点向上调整,最终堆变成:数组形式为:。交换堆顶和数组最后一个元素: 数组:。 重复上述过程,每次将堆顶移到未排序部分的末尾,并调整剩余堆。最终结果:。堆排序是原地排序算法,不需要额外的数组存储数据,空间复杂度为 。这段代码实现了标准的堆排序算法,具有以下特点:
2024-12-24 15:23:56
788
原创 C语言快速排序
遍历数组,让大于该标准的元素放在标准数的右边,小于该标准的元素放在标准数的左边,如果相等,两边均可;5’当右索引等于左索引,此时第一轮排序结束,该索引左边元素都小于标准数,右边元素都大于标准数,所以此处为标准数的位置;4’此时空位在右索引,左索引被填充,此时左索引开始右移,把遇到小于标准数的元素,填到右空位以此类推。3’开始移动右索引,如果右索引指向的数组元素小于标准元素,将此元素填到左空位上。2’将第一位作为标准赋值给stand,因此可以把数组首位视为被挖出。1.中心思想:分治思想。
2024-12-23 15:54:40
298
原创 C语言实现二叉树的创建
运用冒泡排序预处理数组。运用递归,搜索是否元素已经存在,若不存在就创建新节点,将数据写入。最后运用递归实现二叉树的中序遍历测试二叉树是否创建成功。
2024-12-01 17:18:41
415
原创 C语言解决汉诺塔问题
2.移动:将上面的(n-1)部分从A柱移动到B柱【用递归解决(n-1)个盘子的移动】,然后将第n个盘从A柱移动到C柱,最后将前(n-1)部分从B柱移动到C柱【用递归解决(n-1)个盘子的移动】;2.复杂一点:有两个盘子,将小盘从A柱移动到B柱,然后将大盘从A柱移动到C柱,最后将小盘从B柱移动到C柱;递归就是解决前(n-1)个盘子从A柱移动到B柱,再从B柱移动到C柱的手段,将(n-1)个盘子不断拆分解决;1.拆分:将n个盘片看成两部分,第n个看成一部分,前(n-1)看成另一部分;
2024-12-01 15:12:56
430
原创 C语言KMP算法实现
2.当目标串的长度为(i-1)的子串的前缀与后缀存在相同部分(前缀与后缀:例1.ababa的前缀为前三个字母"abc" 后缀为后三位"abc" 例2.abab的前缀为前两位"ab" 后缀为后两位"ab")则目标串无需从头开始遍历,避免重复(当目标串为ababaa时当目标串的第5位与原始串不匹配时目标串只需要从第三位开始与原始串进行比较)。确定目标串每一位不匹配时因该从第几位开始遍历匹配用数组储存,算法:回归的位数=不匹配位数-1长度的子串的前缀与后缀相同位数+1;1.当目标串元素都不同时没有优势。
2024-11-15 19:25:47
699
原创 C语言朴素模式匹配算法——查找定位子串
读取原字符串及其长度--->读取目标字符串及其长度--->用滑动窗口的方式分割原字符串使其成为目标长度的子串--->遍历比较子串与目标字符串是否一致--->输出。
2024-11-12 20:25:51
212
原创 C语言栈与队
只允许从队尾入队,从队首出队,遵循先入先出(FIFO--->First in First Out)规则。只允许从上向下进行操作,遵循后进先出(LIFO--->Last in First Out)规则。栈与队是规定了写入和读取顺序的特殊链表。
2024-11-06 15:42:53
168
原创 C语言双向链表
与单链表对比,双向链表的增、删、改无需遍历多次以查找目标节点前一节点与后一节点,效率提高,代码对比。2.结构体新增前驱指针,空间利用率相对低(大项目可忽略)1.插入与删除代码相对复杂。
2024-11-06 09:47:40
995
原创 C语言单链表的增删查改
定义一个结构体用于储存数据,结构体中存在一个指针(指针类型与结构体类型一致)用于指向下一个节点。遍历节点,找到目标节点指针,进行增删查改的操作。二、单链表增删查改的关键。
2024-11-05 20:23:34
309
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人