java 折半找索引程式碼(實用+程式碼詳解)
阿新 • • 發佈:2019-01-14
* 陣列的查詢功能 在一個數組中,找一個元素,是否存在於陣列中,如果存在,就返回索引 普通查詢: 找到元素在陣列中出現的索引,如果沒有這個 元素,結果就是負數 */ public class ArrayMethodTest_3{ public static void main(String[] args){ int[] arr = {1,3,5,7,9,11,15}; int index = binarySearch(arr,10); System.out.println(index); } /* 定義方法,實現,折半查詢 返回值: 索引 引數: 陣列,被找的元素 實現步驟: 1. 需要的變數定義 三個,三個指標 2. 進行迴圈折半 可以折半的條件 min <= max 3. 讓被找元素,和中間索引元素進行比較 元素 > 中間索引 小指標= 中間+1 元素 < 中間索引 大指標= 中間-1 元素 == 中間索引 找到了,結束了,返回中間索引 4. 迴圈結束,無法折半 元素沒有找到 ,返回-1 */ public static int binarySearch(int[] arr, int key){ //定義三個指標變數 int min = 0 ; int max = arr.length -1 ; int mid = 0; //迴圈折半,條件 min<=max while( min <= max){ //公式,計算中間索引 mid = (min+max)/2; //讓被找元素,和中間索引元素進行比較 if(key > arr[mid]){ min = mid + 1; }else if (key < arr[mid]){ max = mid - 1; }else{ //找到元素,返回元素索引 return mid; } } return -1; } /* 定義方法,實現陣列的普通查詢 返回值: 索引 引數: 陣列, 被找的元素 實現步驟: 1. 遍歷陣列 2. 遍歷過程中,使用元素和陣列中的元素進行比較 如果相同,返回元素在陣列中的索引 如果不同,返回負數 */ public static int search(int[] arr, int key){ //遍歷陣列 for(int i = 0 ; i < arr.length ; i++){ //陣列元素,被查詢的元素比較 if(arr[i] == key){ //返回索引 return i; } } return -1; } }