二分查詢是在完全有序陣列(或部分有序)中對某一元素進行快速查詢的演算法。時間複雜度為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...