线性搜索即从数组一端开始遍历,直到找到元素返回或查找结束。
public int linearSearch(int searchKey){
for (int index = 0; index<data.length; index++){
if (data[index] == searchKey)
return index;
}
return -1;
}
二分法搜索要求数组有序,我们从数组中间开始,与所查元素进行比较,若所查元素较小,说明所查元素应该在数组的前半段(升序),于是在数组前半段再次进行二分法搜索。
public int binarySearch(int searchElement){
int low = 0;
int high = data.length-1;
int mid = (low+high+1)/2;
int location = -1;
do{
if (searchElement == data[mid])
location = mid;
else if (searchElement <data[mid])
high = mid -1;
else
low = mid + 1;
mid = (low+high+1)/2;
} while((low<=high)&&(location ==-1));
return location;
}