c++面試必須熟練掌握的演算法(持續更新)__演算法

來源:互聯網
上載者:User

1.歸併排序 時間複雜度O(nlogn) 輔助空間O(n) 穩定void merge_sort(int *A,int x,int y,int *T)    //對數組A [x,y)排序 數組T是輔助空間{    if(y-x>=2)    //至少有兩個元素才排序    {        int m=x+(y-x)/2;                    //第一步劃分        int p=x,q=m,i=x;                merge_sort(A,x,m,T);                //第二步遞迴求解        merge_sort(A,m,y,T);                        while(p<m||q<y)                        //第三步合并        {            if(q>=y||(p<m&&A[p]<=A[q]))                T[i++]=A[p++];            else                T[i++]=A[q++];        }        for(i=x;i<y;++i)    //從輔助空間複製回A數組            A[i]=T[i];    }}


2.快速排序 時間複雜度O(nlogn) 輔助儲存O(logn) 不穩定void QuickSort(int A[],int p,int r)        //對數組A [p,r]{    if(p<r)    //至少有兩個元素    {        int q=Partition(A,p,r);        QuickSort(A,p,q-1);        //對左半段排序 [p , q-1]        QuickSort(A,q+1,r);        //對右半段排序 [q+1,r ]    }}int Partition(int A[],int p,int r){    int i=p,j=r+1;    int key=A[p];    //將小於key的元素交換到左邊地區,將大於key的元素交換到右邊地區    while(true)    {        while(A[++i]<key&&i<r)    ;    //空語句        while(A[--j]>key)        ;    //空語句        if(i>=j)            break;        swap(A[i],A[j]);    }    swap(A[j],A[p]);    return j;}


3.二分尋找int bsearch(int *A,int x,int y,int v)    //在有序數組A [x,y) 尋找v{    int m;    while(x<y)    {        m=x+(y-x)/2;        if(A[m]==v)            return m;        else if(A[m]>v)            y=m;    //[x,m)        else            x=m+1;    //[m+1,y)    }        return -1;    //尋找失敗}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.