Java数据结构 - 查找算法

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     }

猜你喜欢

转载自www.cnblogs.com/GjqDream/p/11576349.html