二分查找又称折半查找法,是一种重要的查找算法。它的主要的应用是从一个给定的序列中查找指定的元素,二分查找的原理比较简单此处不再赘述。 从实现的角度看,有递归方法和非递归方法。 下面分别给出二分查找的递归实现和非递归实现方法: 非递归实现: 这里面容易出错的地方有: 1. 代码第4行的判断条件是lef ...
分类:
其他好文 时间:
2019-03-15 23:12:25
阅读次数:
267
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路: 根据中序遍历的非递归实现完成。、 对于任一结点P, 1)若其左孩子不为空,则将P入栈并将P的左孩子置为当前的P,然后对当前结点P再进行相同的处理; 2)若其左孩子 ...
分类:
其他好文 时间:
2019-03-02 18:38:42
阅读次数:
173
[toc] 算法介绍 wiki "并查集" 通俗解释 "零基础学并查集算法" 算法实现(C语言) Find函数(未采用路径压缩) Find函数(路径压缩递归实现) Find函数(路径压缩非递归实现) Join函数 算法实战 "HOJ 1232" 修改的地方是每相连两个城镇需要额外多一步 —— 减少道 ...
分类:
编程语言 时间:
2019-02-12 12:52:52
阅读次数:
213
平时用的话,就是这个 两个数互质则有: 非递归实现 我感觉嘛, 还是非递归好,时间应该会短一丢丢 ...
分类:
编程语言 时间:
2019-01-31 16:49:13
阅读次数:
212
假设一个楼梯有 N 阶台阶,人每次最多可以跨 2 阶,求总共的爬楼梯方案数。这里使用非递归实现:先不写代码,自己计算当楼梯数为1/2/3/4/5时,对应的爬法有1/2/3/5/8/13/21种。可以发现,随着楼梯数N的增加,爬法总数呈现斐波那契数列规律增加,即f(n) = f(n-1) + f(n- ...
分类:
编程语言 时间:
2019-01-28 20:13:20
阅读次数:
180
合并排序: 合并排序算法是用来分治策略实现对n个元素进行排序的算法,其基本思想是:将待排序元素分成大小大致相同的两个子集合, 分别对两个子集合进行排序,最终将排好序的子集合并成要求的排好序的集合。 递归实现如下: 非递归实现如下:方法自个考虑,其实实现起来很简单。 ...
分类:
编程语言 时间:
2019-01-12 19:26:51
阅读次数:
230
一、递归实现 以上的cout<<root->data;是对结点的一种操作,这里可以对结点做任意想做的操作。 二、非递归实现 ...
分类:
其他好文 时间:
2018-12-04 14:33:56
阅读次数:
158
归并排序可以采用递归方法(见:归并排序),但递归方法会消耗深度位O(longn)的栈空间,使用归并排序时,应该尽量使用非递归方法。本文实现了java版的非递归归并排序。 更多:数据结构与算法合集 思路分析 递归排序的核心是merge(int[] arr, int start, int mid, in ...
分类:
编程语言 时间:
2018-11-15 21:09:31
阅读次数:
150
java中扫描指定文件夹下面的所有文件扫描一个文件夹下面的所有文件,因为文件夹的层数没有限制可能多达几十层几百层,通常会采用两种方式来遍历指定文件夹下面的所有文件。递归方式非递归方式(采用队列或者栈实现)下面我就给出两种方式的实现代码,包括了递归与非递归实现,code如下所示。 package q. ...
分类:
编程语言 时间:
2018-11-10 19:02:37
阅读次数:
217
/*非递归二分查找*/ #include void main(){ int a[10]={11,21,31,41,51,61,71,81,91,101}; int low=0,high=9; int key; printf("请输入要查找的数:"); scanf("%d",&key); while(... ...
分类:
其他好文 时间:
2018-11-04 22:51:53
阅读次数:
283