简单的查找算法学习记录
package com.zhuguozhu.p1;
/**
* 简单的查找算法实现
* @author Guozhu Zhu
* @date 2018/3/22
* @version 1.0
*
*/
public class SearchTest {
public static void main(String[] args) {
int[] arr = {1, 4, 6, 7, 8, 11};
System.out.println(search01(arr, 4));
System.out.println(search02(arr, 4));
System.out.println(search03(arr, 4, 0, arr.length-1));
}
/*
* 顺序查找
*/
public static int search01(int[] arr, int e) {
for (int i = 0; i < arr.length; i++) {
if (e == arr[i]) {
return i;
}
}
return -1;
}
/*
* 二分查找
*/
public static int search02(int[] arr, int e) {
int low = 0;
int high = arr.length-1;
int mid = 0;
while (low <= high) {
mid = (low + high) / 2;
if (e < arr[mid]) {
high = mid -1;
} else if (e > arr[mid]) {
low = mid + 1;
} else {
return mid;
}
}
return -1;
}
/*
* 二分查找(递归实现)
*/
public static int search03(int[] arr, int e, int low, int high) {
if (low > high) {
return -1;
}
int mid = (low + high)/2;
if (e == arr[mid] ){
return mid;
} else if (e < arr[mid]) {
return search03(arr, e, low, mid-1);
} else {
return search03(arr, e, mid+1, high);
}
}
}