算法导论 (一)归并排序实现 c++

来源:互联网 发布:淘宝商家编码在哪 编辑:程序博客网 时间:2024/06/05 12:03
#include <iostream>using namespace std;void Merge_Sort(int *a,int p,int q ,int r)//归并{    int i,j,k;    int n1=q-p+1;    int n2=r-q;    int *le=NULL;    int *ri=NULL;    le = new int [n1];    ri = new int[n2];    for(i=0;i<n1;i++)    {        le[i]=a[p+i];    }    for(j=0;j<n2;j++)    {        ri[j]=a[q+j+1];    }    i=j=0;    k=p;    while(i < n1 && j < n2)    {        if(le[i]<=ri[j])            a[k++]=le[i++];        else a[k++]=ri[j++];    }    for(;i<n1;i++)        a[k++]=le[i];    for(;j<n2;j++)        a[k++]=ri[j];}void  Merge(int *a,int p,int r)//分解{    if(p<r)    {       int q=(int)((r+p)/2);    Merge(a,p,q);    Merge(a,q+1,r);    Merge_Sort(a,p,q,r);    }}int main(){    int arr[7]={1,99,-7,-86,-56,84,15};    Merge(arr,0,6);//进入分解    for(int i=0;i<7;i++)//输出        cout<<arr[i]<<endl;    return 0;}


 

开始刷算法导论

 

0 0