二分查找也叫折半查找,二分查找的查找效率是十分高效的。
而想要应用二分查找法,这“一堆数”必须有一下特征:
· 存储在数组中
· 有序排列
所以如果是用链表存储的,就无法在其上应用二分查找法了
package com.citi.byteman.test.arithmatic; public class Dichotomy { public static int[] init() { int[] list = new int[10]; for (int i = 0; i < list.length; i++) { list[i] = i + 1; } return list; } public static int binarySearch(int[] list, int target) { list = init(); int start = 0; int end = list.length - 1; while (start <= end) { int middle = (start + end) / 2; if (list[middle] < target) { start = middle + 1; } else if (list[middle] > target) { end = middle - 1; } else { return middle; } } return -1; } public static void main(String[] args) { int[] list = {}; System.out.println(binarySearch(list, 50)); } }