二分查詢元素求比較次數

2021-09-28 16:44:41 字數 906 閱讀 4945

在順序表 中,用二分法查詢關鍵碼 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 ...