当前位置:首页 > 开发教程 > C语言 >

二路归并排序算法

时间:2013-09-22 09:05 来源: 作者: 收藏

2345软件教程,为您打造全面的软件教程手册,无论是新奇小软件的操作还是专业软件的使用技巧,2345软件教程都会为您解疑释惑。

核心提示:写了个二路归并的归并排序小代码,直接贴上来

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

/*

file:quick.cpp

author:www.5dkx.com

*/

#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<<b[i]<<" ";

cout<<endl;

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

cout<<a[j]<<" ";

cout<<endl;

}

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

{

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

while((i<=mid)&&(j<=high))

{

if(a[i]<=a[j])

{

b[k]=a[i];

i++;

}

else

{

b[k]=a[j];

j++;

}

k++;

}

while(i<=mid)

{

a[k]=a[i];

k++;

i++;

}

while(j<=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);

}

}


C语言阅读排行

最新文章