二分查詢及其變形

2021-08-14 14:06:45 字數 971 閱讀 8926

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

方法一:o(n)

public int minnumberinrotatearray(int  array) 

return array[0];

}

方法二:o(logn)

public int rotate(int array)

}return array[low];

}

二、給出兩個有序陣列,求有序陣列中出現的共同數字的個數

方法一:暴力求解,遍歷a陣列每乙個數字然後在b陣列中遍歷尋找 

public int countcommon(int a,int b)

}return cnt;

}

三、統計乙個數字在排序陣列中出現的次數。

用二分查詢的思想尋找第一次和最後一次的下標,時間複雜度o(logn)

public int getnumberofk(int  array , int k) 

//返回數字k在有序陣列中出現的第一次的下標,不存在返回-1

public int firstindex(int array,int k)

} return -1; }

public int lastindex02(int array,int k)

} return -1;

}

二分查詢及其變形

最基本的二分查詢模版 在有序陣列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...

變形二分查詢

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

二分搜尋及其變形討論

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