演算法總結之 在陣列中找到乙個區域性最小的位置

2021-09-23 13:56:03 字數 1100 閱讀 3547

給定無序陣列arr, 已知arr中任意連個相鄰的數都不相等。  寫乙個函式,只需返回arr中任意乙個區域性最小出現的位置

本題利用二分查詢

1 如果arr為空後者長度為0,返回-1

2 如果arr長度為1或者arr[0]3 如果arr[n-1] < arr[n-2] 返回n-1

4 如果長度大於2 且 arr的左右兩頭都不是區域性最小,則令 left=1, right =n-2, 然後進行二分查詢

給定思路   mid=(left+right)/2 

如果 arr[mid] > arr[mid-1]  那麼在 left......mid-1上肯定存在區域性最小  所以令 right=mid-1

如果 arr[mid] < arr[mid+1]  那麼在 mid+1......right上肯定存在區域性最小  所以令 left=mid+1

上面兩個都不滿足,arr[mid] 就是區域性最小  返回mid

一直查詢 知道left == right時停止  返回left就ok

由此可見!!!!!! 二分查詢並不是陣列有序才能使用!!!!

toov5 閱讀(

...)

編輯收藏

在陣列中找到乙個區域性最小的位置

題目 定義區域性最小的概念。1 arr長度為1時,arr 0 是區域性最小。2 arr的長度為n n 1 時,如果arr 0 arr 1 那麼arr 0 是區域性最小 如果arr n 1 arr n 2 那麼arr n 1 是區域性最小 如果0 i n 1,既有arr i arr i 1 又有arr...

在陣列中找到乙個區域性最小的位置

定義區域性最小的概念。arr長度為1時,arr 0 是區域性最小。arr的長度為n n 1 時,如果arr 0 給定無序陣列arr,已知arr中任何兩個相鄰的數不相等。寫乙個函式,只需返回arr中任何乙個區域性最小出現的位置即可。思路 當arr 0 arr 1 arr n 1 arr n 2 時,箭...

python 在陣列中找到乙個區域性最小的位置

題目如下 利用二分查詢可以讓複雜度降到o logn 空間複雜度o 1 解答如下 python 如下 def getlessindex arr ifnot arr return 1 le len arr if le 1 or arr 1 arr 0 return 0if arr le 1 arr le...