题目:
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
例如数组(3,4,5,1,2)位{1,2,3,4,5}的一个旋转,该数组的最小值为1.
基本思想:
二分查找,p1指向a[0],p2指向a[len-1]。如果a[mid]>a[p1],则最小值在后半段,p1=mid;如果a[mid]
特殊情况:
...
分类:
编程语言 时间:
2015-04-23 17:27:23
阅读次数:
123
复杂度 O(lgN)使用条件:数据已经排序并在内存中。package chapter1;public class BinarySearch { public static > int binarySearch(T [] a, T x){ int low =0; int high = a.le...
分类:
其他好文 时间:
2015-04-23 01:59:16
阅读次数:
118
二分查找法functionbinary_search(source_arr,target){varlen=source_arr.length,start=0,end=len-1,middle,middle_val;while(start<=end){middle=parseInt((start+end)/2);middle_val=source_arr[middle];if(middle_val==target){returnmiddle;}elseif(middle_val>targe..
分类:
编程语言 时间:
2015-04-21 18:34:43
阅读次数:
420
二分法查找1.二分法查找是建立在已经排序的基础之上的。2.以下程序分析从小到大排序。3.这个数组中没有重复的元素.1
3591113
56以上是一个已经排好序的int类型的数组,要求快速找出13这个元素的下标。分析过程如下:int
begin=0;intend=6;intmid=
3;中间元素是9,9<13begin=mi..
分类:
编程语言 时间:
2015-04-21 11:29:37
阅读次数:
131
二叉排序树 是一种 动态 查找树,它的 创建 是在 查找中 生成的。 当 查找 失败时,它将 数 插入到 合适的 位置中去。 二叉查找树的 左子树上的值 父亲的 值 小,而 右子树上的值 总是 比 父节点 大。这样 查找 类似与 二分 查找,其 最多 查找 的 次数 等于 树的 深度。
下面的代码 主要 是 两方面:插入 节点 和 删除 节点。
下面 给出 代码, 欢迎 指出 代码 不...
分类:
编程语言 时间:
2015-04-21 09:52:24
阅读次数:
163
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前...
分类:
编程语言 时间:
2015-04-20 23:58:55
阅读次数:
477
查找顺序表时,若 每个元素的概率 都相等 用 二分查找 效率 最高。但是 如果 概率 不相等时,(SOST)静态最优查找表 效率 要高于 二分查找。静态最优查找表 是 使得 从 根 到 每个节点的路径 长度 和 权值 乘积 之和 最小。
书上说的 静态最优 查找树的创建 时间 复杂度 较高,所以 用 次优 查找树(NOST) 代替。
下面 上代码:
// Nost.cpp : 定义控制台应用...
分类:
其他好文 时间:
2015-04-20 17:07:05
阅读次数:
192
查找定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。
查找表分类:静态查找表和动态查找表。
静态查找表:只查找,而不进行插入,删除。
动态查找表:在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已经存在的某个数据元素。
静态表的 查找 大致 四种 算法: 线性查找,二分查找,斐波那契查找和插值查找。 其中 在线性...
分类:
其他好文 时间:
2015-04-20 13:16:26
阅读次数:
128
解法一:
利用快速排序的思想,假设N个数存储在数组S中,我们从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb,Sa中的元素大于等于X,Sb中的元素小于X。
伪代码如下:
Kbig(S,k)
if(k
if (length S
return S
(Sa,Sb)=Partition(S)
return Kbig(S...
分类:
其他好文 时间:
2015-04-20 09:34:08
阅读次数:
134