二分法:讲道理的说,我还是改了好几次才写好- -
package com.kevindai;
import java.util.Arrays;
public class BinarySearch {
public static void main(String[] args) {
int[] source = {1,8,15,7,95,30,78,32,56,91,17};
Arrays.sort(source);
int key = 8;
System.out.println(rank(source,key));
}
public static int rank(int a[],int key){
int start = 0;
int end = a.length - 1;
while(start <= end){
int mid = start + (end - start)/2;
if(a[mid] > key){
end = mid - 1;
}else if(a[mid] < key){
start = mid + 1;
}else{
return mid;
}
}
return -1;
}
}
看到这里有人要问了,我直接用以下代码不是更简单
for(int i = 0;i < arr.length;i++){
if(arr[i] == key){
return key;
}
}
我真是飞上去一脚,就你知道的多!用二分法快啊、效率高啊、会写别人不会写的东西B格高啊!