例子:有序数组查找//1递归做法function findArr(arr,value,left,right){var mid=Math.floor((left+right)/2);//防止无穷递归if(left>right){return}if(arr[mid]>value){//左边return ...
分类:
Web程序 时间:
2014-10-14 15:47:21
阅读次数:
140
无序数组有序数组查找比较次数O(N)比较次数O(logN)<—二分查找插入O(1)比较次数O(N) 移动次数MaxO(N)删除比较次数O(N)比较次数O(logN) 移动次数MaxO(N)移动次数MaxO(N)--------------------------------------------....
分类:
其他好文 时间:
2014-09-30 13:37:49
阅读次数:
134
网上看了有些代码有些错误,这里重新更正了下
思想:循环数组有一边是有序的,首先先判断哪一边有序(通过将当前mid点与最左边节点比较),然后查看是否在有序边上
代码如下
#include
#include
using namespace std;
int Binary_Search(int *a,int low,int high,int value)
{
int mid=(low+high)...
分类:
其他好文 时间:
2014-09-12 19:11:56
阅读次数:
236
题目如下:给定一个升序的整数数组,查找某一个值在数组中出现的索引号,例如,输入数组2,3,3,4,4,5;查找的数是3,则返回1,2。时间复杂度要求为O(logN)。 初次拿到这个题目可以立即想到用二分查找来做,先比较中间的数和要查找的数,如果关键字(要查找的数)小于中间的数,那么在数组的左半部分继续查找,如果关键字大于中间的数,那么在数组的右半部分继续查找,如果关键字和中间的数相等...
分类:
其他好文 时间:
2014-08-28 22:49:26
阅读次数:
320
如果直接对矩阵元素进行二分查找的话,时间复杂度是O(m*n),其实很容易想到先通过查找找到对应可能存在于哪一行,然后再在那行中查找是否存在,采用最简单的直接查找这样时间复杂度仅有O(m+n),如果这两次查找再分别采用二分查找的话,时间复杂度更可以降低到O(logm+logn),下面是O(m+n)的代码:...
分类:
其他好文 时间:
2014-07-13 18:50:21
阅读次数:
228
二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行....
分类:
其他好文 时间:
2014-07-11 10:40:19
阅读次数:
183
http://blog.csdn.net/pickless/article/details/9191075Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e.,0 1 2 4 5 6 7migh...
分类:
其他好文 时间:
2014-07-11 09:14:04
阅读次数:
222
题目:Suppose a sorted array is rotated at some pivot unknown to you beforehand.(i.e.,0 1 2 4 5 6 7might become4 5 6 7 0 1 2).You are given a target valu...
分类:
其他好文 时间:
2014-07-06 23:34:53
阅读次数:
273
1 #include 2 using namespace std; 3 int main(){ 4 int i,n,x,a[20]; 5 cin>>n>>x; 6 for(i=0;i>a[i]; 8 for(i=0;i<n;++i) 9 if(x==...
分类:
其他好文 时间:
2014-07-05 20:10:01
阅读次数:
154