在順序表 中,用二分法查詢關鍵碼 20需做( ) 次關鍵字比較。
解:數值 12 15 17 20 24 30 38 43 45 51 52
下標 0 1 2 3 4 5 6 7 8 9 10
以上一共11個數,按下標則是0…10,以下按照步驟進行
1、mid=(left + right)/ 2 = (0 + 10) / 2 = 5
即第一次使用目標值20與下標為5的值30進行比較,20<30,則 right = mid - 1 = 4;
2、mid=(left + right)/ 2 = (0 + 4) / 2 = 2
即第二次使用目標值20與下標為2的值17進行比較,20>17,則 left = mid + 1 = 3;
3、mid=(left + right)/ 2 = (3 + 4) / 2 = 3,(int,向下取整)
即第三次使用目標值20與下標為3的值20進行比較,20=20,返回下標3,演算法結束。
綜上所述,進行了3次比較.
注意:1、每次二分時 mid=(left + right)/ 2 都是向下取整的;
2、每次比較後,如果沒找到,就放棄當前比較的值,right = mid - 1 / left = mid + 1。
最後附上相關**:
public class binarysearch ;
system.out.println(binarysearch.search(arr, 20));
}public static int search(int arr, int key) else if (key < arr[mid]) else if (key > arr[mid])
}
二分查詢目標元素索引
package com.zhangry.search public class binarysearch int start 0 int end arrayforsearch.length 1 int target 3 system.out.println target 在此陣列中的索引為 bina...
迭代二分查詢二分查詢
在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...
二分查詢(陣列裡查詢某個元素)
二分查詢 折半查詢 陣列元素有序 陣列的元素必須有順序,從小到大或者從大到小。1 定義乙個有序的陣列 max 10000 陣列最大值 number 1 陣列開始值 arr 陣列 while number max 1 二分查詢 arr 陣列 low陣列key最小值 high 陣列key最大 搜尋 k ...