1、线性查找(一层 for 循环)O(n)
1 // 线性查找
2 public int search(int target) {
3 // 遍历数组
4 for (int i = 0; i < elements.length; i++) {
5 if (elements[i] == target) {
6 if (elements[i] == target) {
7 return i;
8 }
9 }
10 }
11 // 没有找到指定的元素
12 return -1;
13 }
2、二分查找(注意循环的结束条件是开始大于等于结束)O(logn)
1 public int binarySearch(int target) {
2 // 记录开始位置
3 int begin = 0;
4 // 记录结束位置
5 int end = elements.length-1;
6 // 记录中间的位置
7 int mid = (begin+end)/2;
8 // 记录目标位置
9 int index = -1;
10 // 二分法查找
11 while (begin < end) {
12 // 判断中间的这个元素是不是要查找的元素
13 if (elements[mid] == target) {
14 index = mid;
15 break;
16 // 中间这个元素不是要查找的元素
17 } else {
18 // 判断中间这个元素是不是比目标元素大
19 if (elements[mid] > target) {
20 // 把结束位置调整到中间位置的前一个位置
21 end = mid - 1;
22 // 中间这个元素比目标元素小
23 } else {
24 // 把开始位置调整到中间位置的后一个位置
25 begin = mid + 1;
26 }
27 // 取出新的中间位置
28 mid = (begin + end)/2;
29 }
30 }
31 return index;
32 }