当前位置:首页 > 源码 > 正文

C语言二路归并排序算法

2019-10-30 10:37 点击:9次 作者:biucz 我来投稿

C语言二路归并排序算法

写了个二路归并的归并排序小代码,直接贴上来

#include<iostream>

using namespace std;

void Merge(int a[],int low,int mid,int high,int b[]);

void MSort(int a[],int low,int high,int b[]);

void main()

{

int a[]={4,5,9,10,51,6,46,36,6,56,67,45,36};

int b[13];

MSort(a,0,12,b);

for(int i=0;i<13;i++)

cout&lt;&lt;b<i>&lt;&lt;"";

cout&lt;&lt;endl;

for(int j=0;j&lt;13;j++)

cout&lt;&lt;a[j]&lt;&lt;"";

cout&lt;&lt;endl;

}

void Merge(int a[],int low,int mid,int high,int b[])

{

int i=low,j=mid+1,k=low;

while((i&lt;=mid)&&(j&lt;=high))

{

if(a<i>&lt;=a[j])

{

b[k]=a<i>;

i++;

}

else

{

b[k]=a[j];

j++;

}

k++;

}

while(i&lt;=mid)

{

a[k]=a<i>;

k++;

i++;

}

while(j&lt;=high)

{

a[k]=a[j];

k++;j++;

}

}

void MSort(int a[],int low,int high,int b[])

{

if(low==high)

b[low]=a[low];

else

{

int mid=(low+high)/2;

MSort(a,low,mid,b);

MSort(a,mid+1,high,b);

Merge(a,low,mid,high,b);

}

}