二路归并排序

来源:互联网 发布:淘宝相似问题怎么看 编辑:程序博客网 时间:2024/05/22 11:05
#include <stdio.h>void MergeArray(int a[],int s,int m,int t){    int i = s;    int j = m+1;    int tmp[t+1];    int k=0;    while(i<=m && j<=t)    {        if(a[i] <= a[j])        {            tmp[k++] = a[i++];        }        else        {            tmp[k++] = a[j++];        }    }    while(i<=m)    {        tmp[k++] = a[i++];    }    while(j<=t)    {        tmp[k++] = a[j++];    }    for(i=0;i<k;i++)    {        a[s+i] = tmp[i];    }}void MergeSort(int a[],int s,int t){    if(s<t)    {        int m = (s+t)/2;        MergeSort(a,s,m);        MergeSort(a,m+1,t);        MergeArray(a,s,m,t);    }}void main(){   int a[] = {1,9,8,2,0,9,1,5,6};   MergeSort(a,0,8);   int i;   for(i=0;i<=8;i++)   {       printf("%d->",a[i]);   }}

原创粉丝点击