1.顺序查找 O(n)
没有排序的数据,只能顺序查找,速度比较慢。
//顺序查找 未排序的数据
public int sequenceFind(int []arr,int x){
if (arr.length<=0) {
return -1;
}
for (int i = 0; i < arr.length; i++) {
if (x==arr[i]) {
return i;//找到之后直接返回,不再继续循环
}
}
return -1; //未找到后返回, 未找到时也有 i==n
}
2.折半查找(二分查找)O(logn)
已经排序的数据,有序表顺序存储。
//折半查找
public int BinarySearch(int arr[],int n){
int mid=0,low=0,high=arr.length-1;
while(low<=high){
mid=(low+high)/2;
if (arr[mid]>n) {
high=mid-1;
}else if (arr[mid]<n) {
low=mid+1;
} else {//正好相等
return mid;//找到值的下标
}
}
return -1;//返回-1表示没有找到这个数(不存在)
}