兩種二分查詢

2021-07-06 01:38:26 字數 767 閱讀 2504

給定按照非遞減序的陣列和關鍵字key,返回key在給定陣列中的下標,若不存在則返回-1。

二分查詢的關鍵是控制好下標low和high,以及返回值。最後要返回的是下標low的值

比如給定排好序的陣列nums和要查詢的關鍵字key,返回關鍵字key在陣列中的下標。假設要查詢的關鍵字在陣列中存在。這兩個方法返回的都是陣列中與關鍵字相等的元素的第乙個下標,比如[5,6,6,7,8]關鍵字是6,則返回6的第乙個下標1.

public int binarysearch1(int nums,int key)
上面的是假設關鍵字存在,關鍵字不存在時,返回-1.

/*如果關鍵字在陣列中存在則返回第一次出現的下標,不存在的時候則返回-1*/

public int binarysearch11(int nums,int key){//返回的是與關鍵字相等的元素下界,即如果有多個陣列元素與關鍵字相等的時候,返回的是第乙個元素的下標。

int high = nums.length-1;

int low = 0;

int mid = 0;

while(low

當想返回元素上界的時候:

int upperbound(int nums, int target) { // 找關鍵字在陣列中出現的上界

int high = nums.length - 1;

int low = 0;

int mid = low + (high - low + 1) / 2;

while (low

二分查詢的兩種實現

面試中經常會問到二分查詢,二分查詢的兩種實現 第一種是用遞迴實現的,第二種使用迴圈實現的。package com.lzw public class binary text t new text system.out.println 第一種二分查詢 system.out.println t.binar...

二分查詢的兩種實現方法

二分查詢又名折半查詢法,實現思路可以到網上找到,在此就不在說了。二分查詢有兩種實現方法,一種方法是 使用迴圈遍歷,結束條件是 low high 另一種方法是 使用遞迴,結束條件也是 low high。如下 public class binarysearchtest sortutil.showarr ...

二分查詢的兩種C 實現

二分查詢 binary search 也叫折半查詢。應用它的前提是線性表中的記錄是關鍵碼有序的。基本思想是 在有序表中選取中間值作為比較物件,從而將查詢區間的大小減半,加快查詢速度,直到找到為止。如果我們將折半查詢的過程看做一顆二叉樹的繪製,那麼根據二叉樹的性質 具有n個節點的完全二叉樹的深度為 l...