查询
线性查找:直接遍历比对,直到找到为止,效率较低
public int linearSearch(int val) {
int[] arr = new int[]{1, 2, 3, 4, 5};
int index = -1;
for (int i = 0; i < arr.length; i++) {
if (val == arr[i]) {
index = i;
break;
}
}
return index;
}
二分法查找:对于有序数组而言,先和中间的元素比对缩小查询范围的一种方法,对于有序的数组而言,查询效率比线性查找要高
public int BinarySearch(int val) {
int[] arr = new int[]{1, 2, 3, 4, 5};
//开始位置
int begin = 0;
//结束位置
int end = arr.length - 1;
//中间位置
int mid = (begin + end) / 2;
int index = -1;
while (true) {
if (arr[mid] == val) {
index = mid;
break;
} else if (arr[mid] > val) {
end = mid - 1;
} else {
begin = mid + 1;
}
mid = (begin + end) / 2;
//当没有元素的时候
if(begin>=end){
return index;
}
}
return index;
}