1.二分查找算法(非递归) 此篇写的是非递归算法,递归的在之前的查找算法中写过了。 1.1 算法的适用条件 二分查找只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后在查找。 1.2算法的效率: 时间复杂度为O(log2 n) 实例:使用二分查找的非递归形式对数组{1 3 8 10 1 ...
分类:
编程语言 时间:
2020-02-02 01:28:12
阅读次数:
98
A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes ...
分类:
其他好文 时间:
2020-02-01 19:43:59
阅读次数:
85
Binary Search Trees: BST树里首先讲了插入删除查找等操作,比较常规。查找:最差O(n),最好O(logn),平均O(logn);插入:成功的插入平均O(logn),最差也是O(n);删除里有三种情况,对于一次成功的删除,待删除的结点v的子结点个数只可能是0、1、2,如果是0的话 ...
分类:
其他好文 时间:
2020-02-01 16:03:31
阅读次数:
70
1 #include <stdio.h> 2 3 #define ASC 0 //升序,从左到右,从小到大 4 #define DESC 1 //降序,从左到右,从大到小 5 #define TRUE 1 //布尔值,真 6 #define FALSE 0 //布尔值,假 7 8 typedef i ...
分类:
编程语言 时间:
2020-02-01 15:56:52
阅读次数:
89
二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。查找结点里面的值 的方式就是二分查找的思想 查找次数就是树的高度 二叉查找树可以任意地构造 向一方倾斜的二叉树是不平衡的,查询 ...
分类:
其他好文 时间:
2020-01-31 18:55:12
阅读次数:
121
二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一 ...
分类:
其他好文 时间:
2020-01-31 14:13:05
阅读次数:
53
验证二叉搜索树。题目即是题意。二叉搜索树的特性是对于每个node而言,他的左子树上任意节点都比他自身小,右子树上任意节点都比他自身大。这个题也是有两种做法,迭代和递归。时间空间复杂度都是O(n)。例子, Example 1: 2 / \ 1 3 Input: [2,1,3] Output: true ...
分类:
其他好文 时间:
2020-01-31 10:43:30
阅读次数:
66
妈耶,,,被B题卡到哭,C题一发就过了。。。 字符串问题。首先用vector记录每个字符出现的位置,然后对字符串t的每个字符,用二分查找函数查找,注意用upper_bound查找,对于字符i,首先用变量pre记录第i-1个字符的位置。然后第i个字符的位置只能比 第i-1个字符位置大,所以用二分查一下 ...
分类:
其他好文 时间:
2020-01-30 22:42:45
阅读次数:
82
二分算法 再次理解 "详解二分查找算法" 这篇博客很详细介绍了二分算法的一些细节问题 寻找一个数,也是最基本的二分搜索 寻找左侧边界的二分搜索 这里的代码实现和 相同,都是找到第一个大于等于 的数组下标。 | | 1 | 2 | 2 | 4 | | | | | | | | | 0 | 1 | 2 | ...
分类:
编程语言 时间:
2020-01-30 12:44:23
阅读次数:
91
Given a binary search tree and a node in it, find the in-order successor of that node in the BST. The successor of a node p is the node with the small ...
分类:
其他好文 时间:
2020-01-30 12:39:54
阅读次数:
54