旋轉陣列,找到其最小的元素

2021-09-25 15:40:03 字數 961 閱讀 3945

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。 輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。 例如陣列為的乙個旋轉,該陣列的最小值為1。

解決步驟

首先進行魯棒性,判斷是否輸入合法,陣列不能為空,長度也不能為0

首先宣告三個變數 lo hi mi

這三個變數代表著陣列處理的位置

開始 末尾 中間

當索引號為lo的資料大於索引號為hi的資料是進行迴圈

當lo和hi相鄰的時候 hi為所找的資料

mi為中間的元素

進行判斷,無法正常迴圈的用遍歷的方法進行找資料//lo mi hi所指的元相等

//遍歷單獨寫乙個函式,不然容易死迴圈

//這個函式有乙個小優化,遍歷不需要從第乙個開始而是從lo到hi

如果mi所代表的資料大於等於lo所代表的資料

縮小範圍處理

最後返回中間位置的資料

package com.helan.b;

public class rotatedarraymin ;

system.out.println(arraymin(a));

}private static int arraymin(int a) //4,5,6,7,1,2

int lo=0;

int hi=a.length-1;

int mi=0;

while(a[lo]>=a[hi])

mi=(lo+hi)>>1;

if(a[hi]==a[mi]&&a[lo]==a[mi])

if(a[mi]>=a[lo])else if(mi<=hi)

}return a[mi];

}private static int min(int a,int start,int end)

}return num;

}}

旋轉陣列的最小元素

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。解題 類似二分查詢,使用兩個指標 left right 指向一前一後,一般情況下arr left 一定大於等於arr right ...

旋轉陣列的最小元素

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如有如下陣列 旋轉之後如下 此時需要找出當前旋轉陣列的最小值,由於陣列是遞增的,所以旋轉之後前面的陣列元素會大於後面陣列的元素,也就是陣列大於。因此採用二分查詢的方法找出最小...

旋轉陣列的最小元素

把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。其實最開始這道題我看著是懵逼的,這個旋轉陣列是非遞減的陣列,然後給的例子...