定義區域性最小的概念。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...