二分查詢及其變形

2021-09-11 17:00:19 字數 834 閱讀 4545

最基本的二分查詢模版:

在有序陣列a中查詢key,如果找到,返回位置索引,否則,返回-1;

int binarysearch(int a, int n, int key)

else if (a[mid] > key) else

}return -1;

}

變種1:如果a有多個key元素,返回最大的,否則,返回-1

int binarysearch(int a, int n, int key)

else if (a[mid] > key) else

}return result;

}

變種2:如果a中有多個key元素,返回最小的,否則,返回-1

int binarysearch(int a, int n, int key)

else if (a[mid] > key) else

}return result;

}

變種3:在有序陣列a中,查詢出最小的比key大的元素索引。

int binarysearch(int a, int n, int key)

else

}return left;

}

變種4:在有序陣列a中,查詢出最大的比k小的元素索引。

int binarysearch(int a, int n, int key)

else

}if (a[right] < key) else

}

二分查詢及其變形

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

變形二分查詢

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

二分搜尋及其變形討論

最近刷leetcode的時候遇到了不少二分查詢的題,二分查詢是非常高效的查詢策略,但是有乙個前提就是陣列必須是有序的。1.對於標準的二分搜尋,針對的是沒有重複元素的有序陣列,每個元素只出現一次。標準的二分搜尋的 很簡潔,對於程式設計師來講最好會背 int std binary search int ...