演算法 部分有序陣列元素查詢

2022-06-28 14:36:10 字數 625 閱讀 4078

查詢某元素是否在在陣列中返回位置,要求時間複雜度不能大於o(n)

使用二分查詢

問題的關鍵在於找到最大值所在位置

屬於前半部分就在前半部分二分查詢,否則在後半部分二分查詢

func search(arr:[int],value :int) -> int?

else

if value >= arr[0] && value <=arr[maxindex]

else

if value >= arr[maxindex + 1] && value <= arr[arr.count - 1

]

return

nil}

//二分查詢

func binearsearch(arr:[int],start:int,end:int,value:int) ->int

else

if arr[m] else

if arr[m] >value

}return -1}//

查詢最大位置

func searchmaxoption(arr:[int]) ->int

else

if arr[middel] else

}}

扭轉有序陣列 查詢指定元素

面試題 扭轉後的有序陣列,找到指定的數,返回下標,找不到時返回 1 樣例輸入 3,4,5,6,7,1,2 查詢數字7 樣例輸出 4 審題 有序,扭轉,那麼一部分是有序的,一部分是無序的 思路 二分查詢,必須找到 關鍵點在於 1.利用中間元素去判斷,因為是已經有序的,如果左側小於它,而扭轉後的元素一定...

在旋轉有序陣列中查詢元素

1.題目 給定乙個旋轉的有序陣列,比如是旋轉之後得到的,在陣列中查詢是否存在元素key。要求時間複雜度為o lgn 假定陣列中不存在重複元素。2.分析 從上面的選擇陣列可以發現,array middle 將陣列分成兩段,兩段中必有一段是有序的。這樣就可以使用二分查詢了。乙個變形的二分查詢。3.1 i...

演算法 有序陣列中值

有兩個已排序陣列a b,各自大小分別為m,n。找到兩個已排序陣列的中值。將整個集合分為兩個等長的子集,使一邊的值總是大於另一邊。這道題,可以將a b看作乙個整體,然後劃分為左右兩部分l和r,並且滿足ma x l mi n r max l min r 當總個數 m n 位奇數時,結果為 ma x l ...