劍指offer 旋轉陣列的最小數字

2021-07-29 23:40:57 字數 645 閱讀 2152

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

思路:因為旋轉後該陣列是兩個有序的子陣列,可以用二分查詢來找最小的數。

時間複雜度為o(logn)。

void test1()

; int length=sizeof(numbers)/sizeof(numbers[0]);

int index1=0;

int index2=length-1;

int indexmin=index1; //為了防止這個陣列本身就是排序好的陣列

while(numbers[index1]>=numbers[index2])

int indexmin=((index2-index1)>>1)+index1; //求出中間下標

//1 0 1 1 1

if(numbers[index1]==numbers[index2]&&numbers[index1]==numbers[indexmin])

}if(numbers[indexmin]>=numbers[index2])

if(numbers[indexmin]<=numbers[index2])

}cout<

劍指offer 旋轉陣列的最小數

題目描述 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,若陣列大小為0,請返回0。public class test system.out.pr...

劍指offer 旋轉陣列的最小數字

題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。分析 這道題最直觀的解法並不難。從頭到尾遍歷陣列一次,就能找出最小的元素,時間複雜度顯然是o n 但這個思路沒有利用輸入陣列的特性...

劍指offer 旋轉陣列的最小數字

記錄來自 劍指offer 上的演算法題。題目描述如下 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個選擇,輸出旋轉陣列的最小元素。例如陣列是的乙個旋轉,該陣列的最小值是1。這裡可以採用二分查詢的想法,使用兩個指標,乙個指向第乙個元素,乙個指向末尾元素,...