C++歸併演算法

來源:互聯網
上載者:User

標籤:思想的重要性   歸併演算法   

#include <iostream>using namespace std;void DealWhat(int ar[],int start,int end,int b[]){    int mid = (start + end) / 2;        int i = start;    int j = mid+1;    int k = start;    //將start到end區間劃分為兩個部分,對這兩個部分進行合并排序,每個部分應該是有序的,因為我們是從一個數字開始排序,    //直到多個數位排序,所以部分一定是有序的,逆向逐漸有序。    while (i <= mid && j <= end)    {        if (ar[i] > ar[j])        {            b[k++] = ar[j];            j++;        }        else        {            b[k++] = ar[i];            i++;        }    }    while (i <= mid)    {        for (; i <= mid; i++)        {            b[k++] = ar[i];        }    }    while (j <= end)    {        for (; j <= end; j++)        {            b[k++] = ar[j];        }    }//以上是合并排序。    k = 0;    for (int m = start; m <= end; m++)    {        ar[m] = b[m];//ar數組的值也應該相應的變化,因為在start到end之間已經排序好了,我們只需要將排序好的覆蓋ar數組上面去,                    //為下次遞迴排序做準備工作。         }}void Grial(int ar[],int start,int end,int b[]){    if (start >= end)return;    int mid = (start + end) / 2;//每次取1/2遞迴深入。    Grial(ar, start, mid ,b);//左邊。    Grial(ar,mid+1, end,b);//右邊。    DealWhat(ar,start, end,b);//處理函數,直到遞迴到單個數字。}int main(){    int a[] = {100,2,3,1,99,32,4,11,324,0};    int *b = new int[10];    Grial(a,0,9,b);    for (int i = 0; i < 10; i++)    {        cout << b[i]<<"  " ;    }    cout << endl;//其實這一步數組b到這個地方就可以delete了,因為數組a也隨著排序改變,藉助b這個輔助空間                 //間接的排序原來的數組,本來可以不需要在外面傳遞b,不過我也不想修改了。    for (int i = 0; i < 10; i++)    {        cout << a[i]<<"  ";    }    cout << endl;    return 0;}

感悟:
思想的重要性,如果你的思想沒有在你編程時產生火焰,即使你對別人
思想理解的再深刻,終究只是別人的東西,時間一長,你就會發現你已經
被這些看似光芒四射的東西所奴役,就會越來越累。哈哈,拙見,一起努力。

C++歸併演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.