1. 程式人生 > >劍指offer之二分查詢

劍指offer之二分查詢

@(演算法)

二分查詢

歡迎關注作者部落格
簡書傳送門

思想:

  又叫折半查詢,要求待查詢的序列有序。每次取中間位置的值與待查關鍵字比較,如果中間位置的值比待查關鍵字大,則在前半部分迴圈這個查詢的過程,如果中間位置的值比待查關鍵字小,則在後半部分迴圈這個查詢的過程。直到查詢到了為止,否則序列中沒有待查的關鍵字。

程式碼:

/**
 * @program:
 * @description: 二分查詢
 * @author: zhouzhixiang
 * @create: 2018-11-06 20:08
 */
public class BinSearch
{ /** * 二分查詢普通實現 * @param array * @param key * @return */ public static int binSearch(int array[], int key){ int mid; int start = 0; int end = array.length - 1; while (start < end) { mid = (end - start)/2 + start; if
(array[mid] > key){ end = mid - 1; } else if(array[mid] < key){ start = mid + 1; } else { return mid; } } return -1; } /** * 二分查詢遞迴實現 * @param array * @param key * @return */
public static int binSearch2(int array[], int key, int start, int end){ int mid = (start + end) / 2; while (start < end) { if(array[mid] > key) return binSearch2(array,key,start,mid-1); else if (array[mid] < key) return binSearch2(array,key,mid+1,end); else return mid; } return -1; } }

歡迎加入Java猿社群
掃碼_搜尋聯合傳播樣式-標準色版.png