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

2021-08-16 04:33:07 字數 1041 閱讀 7667

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

思路:當arr[0]>arr[1],arr[n-1]>arr[n-2]時,箭頭是下降趨勢,區域性最小肯定在arr[1]和arr[n-2]中間,然後二分法查詢。同理按照此趨勢,可以不斷二分去除一半,如圖所示。

舉個例子:

如上圖所示,二分查詢到數值7,7的左右兩邊都比它大,7就是區域性最小。

**:

public class findonelessvalueindex 

if (arr.length == 1 || arr[0] < arr[1])

if (arr[arr.length - 1] < arr[arr.length - 2])

int left = 1;

int right = arr.length - 2;

int mid = 0;

while (left < right) else if (arr[mid] > arr[mid + 1]) else

} return left;

} public static void printarray(int arr)

system.out.println();

} public static void main(string args) ;

printarray(arr);

int index = getlessindex(arr);

system.out.println("index: " + index + ", value: " + arr[index]);

}}

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

題目 定義區域性最小的概念。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,已知arr中任意連個相鄰的數都不相等。寫乙個函式,只需返回arr中任意乙個區域性最小出現的位置 本題利用二分查詢 1 如果arr為空後者長度為0,返回 1 2 如果arr長度為1或者arr 0 3 如果arr n 1 arr n 2 返回n 1 4 如果長度大於2 且 arr的左...

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...