
数据结构与算法
xbog
初学者
展开
-
(BFS)广度优先搜索例子:迷宫,寻找连块数
//广度优先搜索主要分成以下几块0、节点node结构体;1、matrix[][],原始矩阵2、增量数组X[],Y[] 实现该坐标的左右上下的更新坐标3、判断时候下一个元素需要入队列的函数4、记录元素坐标时候已经访问的inq[][];//广度优先 BFS//寻找代码块的个数struct Node_B{ int x, y;};Node_B node;int n, m;const int原创 2016-09-17 15:20:30 · 554 阅读 · 0 评论 -
选择排序初步理解
//选择排序初步理解0,循环n趟。下面1,2是循环体: 1,从没有排序中找出最小值 。 minIndex = i;//待交换的索引:也就是从List[i+1]--List[n-1]处找到最小值索引,并赋值给minIndex 2, 将当前待交换的数(nIndex=i)与min交换void selcetSort(){ int a[6] = { 3,原创 2016-09-06 10:40:06 · 270 阅读 · 0 评论 -
二分查找模板总结(递归与循环遍历两个版本)
二分查找:思路: 在有序*数组***a[]中查找K 1,不断分割 。2 用中间值去比较。====================尝试比较下面两种,得到递归函数的写法=========【递归版本】 int BinSerch2(int a[], int k ,int left ,int right){ int mid = (left + right) / 2;//1.不断分割 if (原创 2016-09-06 23:40:51 · 1080 阅读 · 0 评论 -
算法入门:双指针法
一、双指针法【例子1】 :求一个有序数组中和=8的下标。=====================================设置两个不同的指针 ,或者头,或者尾。在一个递增的序列中,。根据结果分类,说明指针的下一步应该怎么移动。结果分类: a[i]+b[j]==8则i++,j–都相互靠近; a[i]+b[j] < 8 ,需要移动指针i ,i++; a[i]+b[j] > 8原创 2016-09-08 10:22:26 · 7258 阅读 · 0 评论 -
二路-归并排序归纳
【递归二路划分 + 分割后的2个数组归并】//归并排序:递归二路划分+归并思想==二路,归并排序//函数的参数列表是:a,l,r;这是每次需要循环递归的初始条件 :数组(操作对象),两个端点//不需要初始化端点,端点由函数传入 //1、二分+ 2.两个左右两边的倒叙递归;由里向外void Two_divide_Merge_Sort(int a[],int left ,int righ原创 2016-09-08 11:43:08 · 421 阅读 · 0 评论 -
递归调用理解【含有示例代码】
1 每一级的函数调用都有自己的局部变量.2 递归函数中,位于递归调用语句后的语句的执行顺序和各个被调用函数的顺序相反. 即位于递归函数入口前的语句,由外往里执行; 位于递归函数入口后面的语句,由里往外执行。3 虽然每一级递归有自己的变量,但是函数代码并不会得到复制.4 递归函数中必须包含可以终止递归调用的语句.“` int region(int a[], int cur原创 2016-09-05 21:57:39 · 453 阅读 · 0 评论 -
完全理解递归与分治:3种方法求数组最大值为例子
递归,分治是一种常见迭代方法。在二叉树遍历,线性表中遍历十分常见。递归、分治最核心的思想是 递推。 从外层–》内层,压栈,使得计算规模不断减小。 从内层–》外层,出栈,需要把计算结果传递给外层,做计算。编写代码请问下自己下面几个问题: 1、传入的参数是什么,是作为缓冲来接收吗, 2.、返回的结果是什么,这个结果需要带入到外层递推公式中。 3、外层函数主要包括: 递原创 2016-11-17 22:44:56 · 1536 阅读 · 0 评论