二分查詢 兩種版本 尋找最先出現的某數

2021-08-20 04:53:03 字數 444 閱讀 3291

二分查詢相信大家都十分清楚,其應用前提是在已有序的陣列中查詢 ,目的是提高查詢效率由o(n)到o(logn)

//基礎版本

int binarysearch(const vectordata, int num)

return -1;

}

這裡主要介紹一種加強版二分查詢,要求是在有重複子序列中找到最先出現的某數

技巧點在於在當中間值和比較的數值相等的時候,以中間值作為end

//加強版(有序序列中最先出現的num)//有重複數

int binarysearch(const vectordata, int num)

if(data[begin] == num)

return begin;

else return -1;

}

兩種二分查詢

給定按照非遞減序的陣列和關鍵字key,返回key在給定陣列中的下標,若不存在則返回 1。二分查詢的關鍵是控制好下標low和high,以及返回值。最後要返回的是下標low的值 比如給定排好序的陣列nums和要查詢的關鍵字key,返回關鍵字key在陣列中的下標。假設要查詢的關鍵字在陣列中存在。這兩個方法...

二分查詢的兩種實現

面試中經常會問到二分查詢,二分查詢的兩種實現 第一種是用遞迴實現的,第二種使用迴圈實現的。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 ...