免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

輸出一個(gè)為遞增排序數(shù)組的旋轉(zhuǎn)數(shù)組中的最小元素——8-創(chuàng)新互聯(lián)

  把一個(gè)數(shù)組最開(kāi)始的若干個(gè)元素搬到數(shù)組的末尾,我們稱之為數(shù)組的旋轉(zhuǎn)。輸入一個(gè)遞增排序的數(shù)組的一個(gè)旋轉(zhuǎn),輸出旋轉(zhuǎn)數(shù)組的最小元素。例如數(shù)組{3,4,5,1,2}為數(shù)組{1, 2,3, 4, 5}的一個(gè)旋轉(zhuǎn),該數(shù)組的最小值為1。

創(chuàng)新互聯(lián)是專業(yè)的劍川網(wǎng)站建設(shè)公司,劍川接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行劍川網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

  當(dāng)然了,將數(shù)組遍歷一遍肯定能找出最小值,但其時(shí)間復(fù)雜度為O(N),效率是最低的,因此,應(yīng)該有一種更高效的解決辦法。

  因?yàn)樵瓟?shù)組是遞增的,因此數(shù)組的第一個(gè)元素一定是最小值,而旋轉(zhuǎn)之后,其最小值就會(huì)成為旋轉(zhuǎn)的分界點(diǎn),因此,查找一個(gè)旋轉(zhuǎn)之后數(shù)組的最小值可以變成查找一個(gè)旋轉(zhuǎn)數(shù)組的旋轉(zhuǎn)點(diǎn)。而我們?nèi)匀豢梢园l(fā)現(xiàn),在旋轉(zhuǎn)點(diǎn)之前的序列是遞增有序的,而在旋轉(zhuǎn)點(diǎn)之后的序列也是遞增有序的,因此可以這樣判斷:

  1. 取數(shù)組的中間值;

  2. 如果中間值比最左值大且比最右值小,那么這個(gè)數(shù)組就是遞增數(shù)組旋轉(zhuǎn)幅度為0,最小值就為數(shù)組第一個(gè)值,直接返回;

  3. 如果中間值比左邊一個(gè)數(shù)小且比右邊一個(gè)數(shù)小,那么中間值就為旋轉(zhuǎn)點(diǎn)也就是最小值,直接返回;

  4. 如果中間值比最左值大且比最右值大,那么中間值往左一定是遞增有序的,而旋轉(zhuǎn)點(diǎn)一定在中間值往右,將范圍縮到中間值右半邊重新從第1步開(kāi)始;

  5. 如果中間值比最左值小且比最右值小,那么中間值往右一定是遞增有序的,而旋轉(zhuǎn)點(diǎn)一定在中間值往左,將范圍縮到中間值左半邊重新從第1步開(kāi)始;

  上面的分析其實(shí)是相當(dāng)于在用二分查找來(lái)做,這樣就將時(shí)間復(fù)雜度降為了O(lgN),下面用代碼來(lái)實(shí)現(xiàn):

#include <iostream>
#include <assert.h>
using namespace std;

int find_min_num(const int *arr, size_t n)
{
    assert(arr && n); 

    int left = 0;
    int right = n-1;
    int mid = (right-left)/2;

    while(left < right)
    {   
        if((arr[left] <= arr[mid]) && (arr[mid] <= arr[right]))
        {
            break;//當(dāng)數(shù)組區(qū)間為遞增時(shí),最小值就為最左值
        }
        else if((arr[mid-1] > arr[mid]) && (arr[mid+1] > arr[mid]))
        {
            return arr[mid];//當(dāng)取到的中間值就為旋轉(zhuǎn)點(diǎn)時(shí),最小值就為中間值
        }
        else if((arr[left] <= arr[mid]) && (arr[mid] >= arr[right]))
        {
            left = mid + 1;//當(dāng)中間值比左邊大且比右邊大時(shí)
        }
        else
        {
            right = mid - 1;//除去上面的三種情況就只剩一種了,那就是中間值比左線小且比右邊小
        }

        mid = (right-left)/2 + left;
    }   
    return arr[left];
}

int main()
{
    int arr[] = {8, 9, 2, 3, 4, 5, 6, 7};
    
    int ret = find_min_num(arr, sizeof(arr)/sizeof(arr[0]));
    cout<<"the min number is: "<<ret<<endl;
    return 0;
}

運(yùn)行程序,輸出結(jié)果為2;

輸出一個(gè)為遞增排序數(shù)組的旋轉(zhuǎn)數(shù)組中的最小元素——8

可以將數(shù)組設(shè)定為不同的情況來(lái)檢驗(yàn)。

《完》

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。

網(wǎng)頁(yè)標(biāo)題:輸出一個(gè)為遞增排序數(shù)組的旋轉(zhuǎn)數(shù)組中的最小元素——8-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://m.newbst.com/article14/hpide.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站建設(shè)手機(jī)網(wǎng)站建設(shè)網(wǎng)頁(yè)設(shè)計(jì)公司商城網(wǎng)站

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司