https://www.cnblogs.com/yw09041432/p/5908444.html
1,顺序查找
说明。适合查找存储结构为顺序存储或者链接存储的线性表
时间复杂度O(n)
//顺序查找
private static int sequenceSearch(int[] arr, int value) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == value) {
return i;
}
}
return -1;
}
2,二分查找
元素必须有序,如果无序要先进行排序操作
时间复杂度O(log2(n))
//二分查找(折半查找)
private static int binarySearch1(int[] arr, int value) {
int low, high, mid;
low = 0;
high = arr.length - 1;
while (low <= high) {
//整数二分
mid = low + (high - low) / 2;
if (arr[mid] == value) {
return mid;
}
if (arr[mid] > value) {
high = mid - 1;
}
if (arr[mid] < value) {
low = mid + 1;
}
}
return -1;
}
/**
* 两端闭区间
* median = (length - 1) / 2
*/
//二分查找,递归版本
private static int binarySearch2(int[] arr, int value, int low, int high) {
int mid = low + (high - low) / 2;
if (arr[mid] == value) {
return mid;
}
if (arr[mid] > value) {
return binarySearch2(arr, value, low, mid - 1);
}
if (arr[mid] < value) {
return binarySearch2(arr, value, mid + 1, high);
}
return -1;
}