首页

源码搜藏网

首页 > 开发教程 > C语言 >

二路归并排序算法

创建时间:2013-09-22 09:05  

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

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

/*

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);

}

}

上一篇:文件操作函数总结
下一篇:函数调用方式的区别

相关内容

热门推荐