69.旋轉陣列中的最小元素。
題目:把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個
排好序的陣列的乙個旋轉,
輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該數
組的最小值為1。
思路:採用一次遍歷求最小值複雜度o(n),通過利用陣列有序這個特點採用二分查詢的方式能達到o(logn)複雜度。
陣列為公升序序列的旋轉,分兩種情況:
當旋轉數目不為0時,陣列中存在兩個遞增序列,並且前面的遞增序列中的數都大於後面的序列,採用二分查詢方法時,當data[mid]大於data[begin]時,說明mid位於第乙個遞增序列中,最小值必然在mid後面,故將begin置為mid+1,當data[mid]小於等於data[begin]時,說明mid必然位於第二個遞增序列,最小值在其和begin之間,故將end置為mid,迴圈執行直到begin和end之間只有乙個元素時,該元素就是最小值。
當旋轉數目為0時(通過data[begin] < data[end]判斷)
,陣列就是乙個公升序序列,在這種情況下,直接返回data[begin]。
具體**如下:
namespace ms100p_69
return data[begin];
} void test()
; cout << minofrotate(data, 6);
}}
Tsukinai的第六十九個程式(字串逆序存放)
利用乙個字元陣列作函式引數,實現字串 最大長度為80個字元 的逆序存放。要求如下 1 在子函式inverse中實現字串的逆序存放。函式原型為 void inverse char str 2 在主函式中 從鍵盤輸入字串 使用gets函式 然後,呼叫inverse函式,最後,輸出逆序後的字串。3 輸入提...
旋轉陣列中的最小元素
題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉。輸出旋轉陣列的最小值。舉例 輸入陣列為的乙個旋轉,該陣列的最小值為1。答 include stdafx.h include using namespace std 查詢旋轉陣列中的最小元素 int...
旋轉陣列的最小元素
題目 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個排好序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。解題 類似二分查詢,使用兩個指標 left right 指向一前一後,一般情況下arr left 一定大於等於arr right ...