二分查詢及變形

2022-08-02 00:42:10 字數 587 閱讀 3523

二分查詢是在完全有序陣列(或部分有序)中對某一元素進行快速查詢的演算法。時間複雜度為o(logn)。

實現方式有遞迴和非遞迴。

非遞迴實現

public int binarysearch(int nums, int key) 

int low = 0, high = nums.length - 1;

while (low <= high)

if (nums[mid] < key) else

} return -1;

}

變形1:查詢陣列中最接近某一元素(即小於)的元素位置。

public int findmaxmin(int nums, int key) 

int low = 0, high = nums.length - 1;

while (low + 1 < high) else

} if (nums[high] < key)

if (nums[low] < key)

return -1;

}

變形二分查詢

title 資料結構與演算法 專案 主題 二分查詢 description 分析 1 查詢的是乙個有序的資料集合 2 每次查詢都是與區間的中間元素進行對比,將待查詢的區間縮小為之前的一半,直到找到要查詢的元素,或者區間被縮小為0 date 2021 version 0.1版本 author coff...

二分查詢及其變形

一 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。方法一 o n public int minnumberinrota...

二分查詢及其變形

最基本的二分查詢模版 在有序陣列a中查詢key,如果找到,返回位置索引,否則,返回 1 int binarysearch int a,int n,int key else if a mid key else return 1 變種1 如果a有多個key元素,返回最大的,否則,返回 1 int bin...