归并排序

来源:互联网 发布:ipad阅读pdf软件 编辑:程序博客网 时间:2024/06/05 15:36

原文链接:http://blog.csdn.net/morewindows/article/details/6678165

void MergeArray(int *a,int first,int mid,int last,int temp){    int i = first,j = mid + a;    int m = mid,n = last;    while(i <= m && j <= n){        if(a[i] < a[j])            temp[k++] = a[i++];        else            temp[k++] = a[j++];     }    while(i <= m)        temp[k++] = a[i++];    while(j <= n)        temp[k++] = a[j++];    for(i = 0;i < k;i++)        a[first + i] = temp[i];}void MergeSortStep(int *a,int first,int last,int *temp){    if(first < last){        int mid = (first + last) / 2;        MergeSortStep(a,first,mid - 1,temp);        MergeSortStep(a,mid + 1,last,temp);        MergeArray(a,first,mid,last,temp);    }}bool MergeSort(int *a,int n){    int *p = new int[n];    if(p == NULL)    return false;    MergeSortStep(a,0,n - 1,p);    return true;}
0 0
原创粉丝点击