
递归
文章平均质量分 67
「已注销」
这个作者很懒,什么都没留下…
展开
-
Ubuntu20.04 Linux C/C++-----归并排序算法&时间复杂度分析&编译过程简化
插入排序算法采取增量式的策略解决问题,每次添一个元素到已排序的子序列中,逐渐将整个数组排序完毕,它的时间复杂度是O(n2)。下面介绍另一种典型的排序算法--归并排序,它采取分而治之(Divide-and-Conquer)的策略,时间复杂度是Θ(nlgn)。归并排序的步骤如下:Divide: 把长度为n的输入序列分成两个长度为n/2的子序列。Conquer: 对这两个子序列分别采用归并排序。Combine: 将两个排序好的子序列合并成一个最终的排序序列。在描述归并排序的步骤时又调用了归并排序本身,可原创 2021-02-17 09:28:54 · 288 阅读 · 0 评论 -
Ubuntu Linux C 编程-----深度优先搜索
现在我们用堆栈解决一个有意思的问题,定义一个二维数组:int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的路线。程序如下:#include <stdio.h>#define MAX_ROW 5#define MAX_COL 5原创 2021-02-16 12:09:24 · 131 阅读 · 0 评论 -
Ubuntu Linux C 编程----用递归实现倒序打印
在main函数中,入栈的顺序是’a’、‘b’、‘c’,而出栈打印的顺序却是’c’、‘b’、‘a’,最后入栈的’c’最早出来,因此堆栈这种数据结构的特点可以概括为LIFO(Last In First Out,后进先出)。我们也可以写一个递归函数来倒序打印,这是利用函数调用的栈帧实现后进先出的:也许你会说,又是堆栈又是递归的,倒序打印一个数组犯得着这么大动干戈吗?写一个简单的循环不就行了:#include <stdio.h>#define LEN 3char buf[LEN]={‘a’,原创 2021-02-16 11:55:14 · 269 阅读 · 0 评论