旋轉(zhuǎn)數(shù)組的最小數(shù)字

把一個有序數(shù)組進行旋轉(zhuǎn),對于已知旋轉(zhuǎn)后的數(shù)組,找出這個數(shù)組中的最小值。

云巖網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)

這個問題看起來比較簡單,只要遍歷一遍數(shù)組就能找到最小值,但如果題目中對時間復(fù)雜度有要求,那么這個時候就要考慮用其他的方法。

可以想到一種方法,二分查找法,每一次二分查找一定會有一邊的數(shù)字是連續(xù)且是遞增的,這個時候我們要找的最小值一定在另一邊,我們又把查找的范圍放在另一邊,以此下去,最終找到最小值,代碼如下:

int find(int a[], int size)

{

int left = 0;

int right = size - 1;

while (left <= right)

{

int mid = (left &right) + (left^right) / 2;

if (a[mid] <= a[left] && a[mid] <= a[right])

{

return a[mid];

}

else if (a[mid] < a[left])

{

right = mid - 1;

}

else if (a[mid] > a[right])

{

left = mid + 1;

}

}

return -1;

}

int main()

{

int a[] = { 3, 4, 5, 1, 2 };

int ret = find(a, 5);

printf("%d", ret);

system("pause");

return 0;

}

網(wǎng)站欄目:旋轉(zhuǎn)數(shù)組的最小數(shù)字
本文來源:http://bm7419.com/article32/iihhpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、定制網(wǎng)站手機網(wǎng)站建設(shè)、品牌網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作