二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前...
分类:
编程语言 时间:
2015-04-20 23:58:55
阅读次数:
477
坚持阅读经典代码,以下是《The C programming language》中的经典例子,每次读来都觉经典,遂摘录下来。
1 折半查找
/* binsearch: find x in v[0] <= v[1] <= ... <= v[n-1] */
int binsearch(int x, int v[], int n)
{
int low, high,...
分类:
其他好文 时间:
2015-04-20 22:43:23
阅读次数:
147
一.有序数组的折半查找【步骤】① low=0,high=length-1; //初始值② 当low>high时,返回查找失败信息③ lowa[mid],low=mid+1; //查找在右半区 c.若key=a[mid],返回mid //查找成功【算法实现】public int bi...
分类:
其他好文 时间:
2015-04-20 22:07:19
阅读次数:
120
这个算法,相信大家都懂,但是不真正的手动写一遍,总觉得不得劲。这不,手动写一遍就是有不一样的效果出现了。往左折半,还是往右走比较简单,其实这两个算法最关键的是:退出条件 min > max 和下次折半时下标或上标位置要+1或-1/// /// 递归的纯算法实现 /// ...
分类:
编程语言 时间:
2015-04-19 15:58:46
阅读次数:
115
Follow up for "Search in Rotated Sorted Array":
What if duplicates are allowed?
Would this affect the run-time complexity? How and why?
Write a function to determine if a given target is in the...
分类:
其他好文 时间:
2015-04-17 18:21:47
阅读次数:
122
准备对能一次读入内存中处理的数据,取前K小,用多种方法进行。设想有:插入排序、折半查找插入排序、链排序、堆排序。顺序查找直接插入:思路:1、对全部数据,依次取值。送到一个队列。2、待判断的数据,在队列中做顺序查找。找到位置则插入。3、当队列满,且待判断的数据大于队列中最大数据,则直接放弃。另,代码中...
分类:
其他好文 时间:
2015-04-15 22:48:56
阅读次数:
161
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
这道题要求根据一个有序的数组建立一棵二叉排序树。利用折半的思想,构造根节点,再递归构造左右子树。递归出口是数组中只含一个元素。TreeNode *sortedArrayToBST(vector &...
分类:
其他好文 时间:
2015-04-14 21:34:22
阅读次数:
98
归并排序的数组实现 1 //折半插入排序 2 void insertSort_Binary(int *arr, int len) 3 { 4 int i, j;//工作指针 5 int low, mid, high;//折半查找指针 6 int current;//暂存待插入...
分类:
编程语言 时间:
2015-04-13 22:37:34
阅读次数:
129
题意:给你一张长W,宽H 的纸,问你能不能者成给定的大小, 每一次折纸只能折成整数大小。解题思路:递推+枚举 枚举给定大小的长和宽,然后套进 W,H中求最小值 , 折纸策略最优是每次折半。解题代码: 1 // BEGIN CUT HERE 2 /* 3 4 */ 5 // END CU...
分类:
其他好文 时间:
2015-04-13 18:51:01
阅读次数:
172
二分查找算法(也称为折半查找算法)效率相对较高,是一种在有序数组中查找某一特定元素的搜索算法。步骤:第一步:从数组的中间元素开始查找,如果数组中的中间元素等于要查找的元素,查找结束;第二步:如果要查找的元素大于或者小于数组的中间元素,则在数组大于或小于中间元素的那一半中查找,和步骤一同样从中间元素开...
分类:
编程语言 时间:
2015-04-12 19:08:59
阅读次数:
120