折半查找
二分查找又称折半查找,对于有序表来说,它的优点是比较次数少,查找速度快,平均性能好。
二分查找的基本思想是将n个元素分成大致相等的两部分,取a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。
二分查找的时间复杂度为O(logn)
package bianchengti; /* * 折半查找 * 给定有序查找表array 二分查找给定的值data * 查找成功返回下标 查找失败返回-1 */ public class QueryHalf { public static int BinSearch(int[] array, int data) { int low = 0; int high = array.length - 1; while (low <= high) { int mid = (low + high) / 2; if (data == array[mid]) { return mid; } else if (data < array[mid]) { high = mid - 1; } else { low = mid + 1; } } return -1; } public static void main(String[] args) { // TODO Auto-generated method stub int array[]= {1,2,3,5}; System.out.println(BinSearch(array, 3)); } }
追梦的脚步,永不停息