二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法...
分类:
编程语言 时间:
2015-05-05 14:14:13
阅读次数:
187
Binary Search:二分查找实现方式:recursive or iterative注意问题,终止循环条件,移动start,end时边界值,start = mid,end = midTemplate:1. 在排序的数组中找A[i] == i的index,有重复元素存在. (cc150 Ques...
分类:
其他好文 时间:
2015-05-05 08:50:23
阅读次数:
163
对一个数组a,在区间下标[x,y]寻找p是否存在,存在则返回下标,否则返回-1。循环和递归实现:(练习用的程序) 1 #include 2 #include 3 #include 4 5 int binSerrch(int a[],int x,int y,int p);//在非递减数组a的x到y.....
分类:
其他好文 时间:
2015-05-04 20:02:01
阅读次数:
115
折半查找又称为二分查找。这种查找方法要求查找表的数据是线性结构保存,并且还要求查找表中的数据是按关键字由小到大有序排列。折半查找(二分查找)是一种简单而又高效的查找算法,其查找长度至多为㏒2n+1(判定树的深度),平均查找长度为㏒2(n+1)-1,效率比顺序查找要高,但折半查找只能适用于顺序存储有序...
分类:
编程语言 时间:
2015-05-04 13:20:21
阅读次数:
152
There are two sorted arrays nums1 and nums2 of
size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
这是一道非常经典的题。这题更通用的形式是,给定...
分类:
其他好文 时间:
2015-05-04 12:00:57
阅读次数:
100
Android SparseArray代替HashMap提升性能...
分类:
移动开发 时间:
2015-05-03 23:42:25
阅读次数:
301
treap的基本操作treap类似二分查找树,只是加了一个堆,用随机值维护平衡,只是期望平衡。小数据下表现并不是特别优秀,但是足够用了。
先水两发,之后再继续搞- -、poj1338 Ugly Numbers把质因子只含2,3,5的数叫Ugly Number.通式为:x=2i×3j×5kx=2^i \times 3^j \times 5^k
注意到是一个幂次计算,因此大致地有:0≤i,j,k≤3...
分类:
其他好文 时间:
2015-05-03 16:06:44
阅读次数:
172
public class QueryDemo {
public static void main(String[] args) {
int[] arr2 = new int[] { 11, 3,32,34, 45, 56, 78 };
System.out.println("67在数组中的位置:" + halfSearch(arr2, 11));
}
public static ...
分类:
编程语言 时间:
2015-05-03 12:04:10
阅读次数:
149
/*
二分查找
普通版 bs();
求下界 low_bs();
求上界 up_bs();
*/
#include
#include
using namespace std;
//[l,r)
int bs(int *T,int l,int r,int v)
{
int m;
while(l>1 要加括号
...
分类:
其他好文 时间:
2015-05-03 00:51:19
阅读次数:
201
题目:
统计一个数字在排序数组中出现的次数。例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.
解法一:O(n)
顺序遍历
解法二:O(logn)
用二分查找,分别找出第一个3,和最后一个3的位置,然后计算个数。
#include
int GetFirstK(int* data,int length,int k,i...
分类:
编程语言 时间:
2015-05-02 23:26:23
阅读次数:
172