搜索往往是建立在排好序的基础上的
二分查找
public class BinarySearch {
public int search(int[] nums, int target) {
int n = nums.length;
int i = 0, j = n, m;
while (i < j) {
m = i + (j - i) / 2;
if (nums[m] == target) {
return m;
} else if (nums[m] < target) {
i = m + 1;
} else {
j = m;
}
}
return -1;
}
}
public class TestBinarySearch {
public static void main(String[] args) {
int[] a = {0,1,2,3,4,5,6,7,8,9};
int target = (int)(15*Math.random());
System.out.println(target);
System.out.println(binarySearch(a,target));
}
public static int binarySearch(int[] a,int target){
int i = 0,j = a.length-1,mid;
while (i<=j){
mid = i + (j-i)/2;
if (a[mid] == target){
return mid;
} else if (a[mid] < target){
i = mid + 1;
} else {
j = mid - 1;
}
}
return -1;
}
}