算法(Algorithm)是解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
常用算法
1. 二分查找
对于有序数组,二分查找的效率在大数据量的情况下,效率明显1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35(1) 循环方式实现
private static int find(int [] arr,int searchKey){
int lowerBound = 0; //起始索引
int upperBound = arr.length -1; //结束索引
int curIn; //中间索引
while(lowerBound <= upperBound){
curIn = (lowerBound + upperBound) / 2;
if(arr[curIn] == searchKey){
return curIn;
}else{
if(arr[curIn] < searchKey){
lowerBound = curIn + 1;
}else{
upperBound = curIn - 1;
}
}
}
return -1;
}
(2) 递归方式实现
private static int recursiveFind(int[] arr,int start,int end,int searchKey){
if (start <= end) {
int middle = (start + end) >> 1; //中间位置 (start+end)/2
if (searchKey == arr[middle]) {
return middle;
} else if (searchKey < arr[middle]) {
return recursiveFind(arr, start, middle - 1, searchKey);// 小于中值时在中值前面找
} else {
return recursiveFind(arr, middle + 1, end, searchKey);// 大于中值在中值后面找
}
} else {
// 找不到
return -1;
}
}