對於乙個陣列,裡面肯定存在乙個最小的數,找出這個最小的數字,有很多的方法
將陣列裡面的數字旋轉一次,即可找到那個最小的數字
這將要使用二分查詢的方法:
以下是**的實現:
#define _crt_secure_no_deprecate
#include#includeusing namespace std;
int binarysearchminnum(int* arr, int length)
mid = low + ((high - low) >> 1);
if (arr[low] == arr[high] && arr[low] == arr[mid])
}return min;
}if (arr[mid] >= arr[low])
else if (arr[mid] <= arr[high])
}return arr[mid];
} else }
int main()
; cout << binarysearchminnum(arr1, 5) << endl;
int arr2[5] = ;
cout << binarysearchminnum(arr2, 5) << endl;
int arr3[5] = ;
cout << binarysearchminnum(arr3, 5) << endl;
int arr4[5] = ;
cout << binarysearchminnum(arr4, 5) << endl;
system("pause");
return 0;
}
執行的結果如下:
劍指Offer08 陣列旋轉問題
把乙個陣列最開始的若干個元素搬到陣列末尾,我們稱之為陣列的旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出陣列最小的元素。例如陣列為的乙個旋轉,該陣列的最小值為1。採用二分法的思路,設定兩個指標分別指向陣列的第乙個元素和最後乙個元素。第乙個元素應該是大於或者等於最後乙個元素的,存在特例 找到陣列中間的元...
劍指offer 08 跳台階
乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 於本題,前提只有 一次 1階或者2階的跳法。a.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 b.假定第一次跳的是2階,那麼剩下的是...
劍指offer 08 跳台階
題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法 先後次序不同算不同的結果 時間限制 c c 3秒,其他語言6秒 空間限制 c c 64m,其他語言128m 題目示例 示例1 輸入 1 返回值 1 示例2 輸入 4 返回值 5解法分析我記得這好像是一...