【基礎排序】歸併排序

來源:互聯網
上載者:User
#include <iostream>#include <time.h>using namespace std;void merge_bxy(int *a,int low,int mid,int high){int p;int i=low;int j=mid+1;int k=low;int *temp = new int[high+1];memset(temp,0,sizeof(int)*(high+1));//前一半和後一半進行歸併for(;i<=mid && j<=high; k++){if(a[i]<a[j]){temp[k]=a[i++];}else{temp[k]=a[j++];}}if(i <= mid){for(p=0; p<=mid-i; p++){temp[k+p]=a[i+p];}}if(j <= high){for(p=0; p<=high-j; p++){temp[k+p]=a[j+p];}}for(p=low; p<=high; p++){a[p]=temp[p];}}void Msort(int *a,int low,int high){if(low < high){int mid = (low+high)/2;Msort(a,low,mid);Msort(a,mid+1,high);merge_bxy(a,low,mid,high);}}void print(int a[],int n)          {              for(int i=0; i<n; i++)              {                  cout<<a[i]<<" ";              }              cout << endl;          }                          void main()          {              int a[10];        srand((unsigned)time(NULL));//初始化隨機數              for(int i=0; i<10; i++)        {            a[i]=rand()%20;        }        cout << "排序前:";              print(a,sizeof(a)/sizeof(a[0]));                    int n=sizeof(a)/sizeof(a[0]);            Msort(a,0,n-1);                 cout << "排序後:";           print(a,sizeof(a)/sizeof(a[0]));          }      

聯繫我們

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