概述
#include <stdio.h>
void merge(int a[],int p,int q,int r)
{
int n1=q-p+1,n2=r-q;
int b1[n1];
int b2[n2];
int i=0,j=0,temp1=p,temp2=q;
while(p<=q)
{
b1[i]=a[p];
++i;
++p;
}
while(q+1<=r)
{
b2[j]=a[q+1];
++j;
++q;
}
p=temp1;q=temp2;
i=0,j=0;
while(p<=r)
{
if(i==n1)
{
a[p]=b2[j];
++j;
}
else if(j==n2)
{
a[p]=b1[i];
++i;
}
else if(b1[i]<b2[j])
{
a[p]=b1[i];
++i;
}
else
{
a[p]=b2[j];
++j;
}
++p;
}
}
void merge_sort(int a[],int p,int r)
{
int q=0;
if(p<r)
{
q=(p+r)/2;
merge_sort(a,p,q);
merge_sort(a,q+1,r);
merge(a,p,q,r);
}
}
int main()
{
int i, a[100];
srand(time(0));
for ( i = 1; i < 101; ++i ){
a[i-1] = rand() % 1001;
printf( "%3d ", a[i-1] );
if(i%15==0) printf("n");
}
printf("nn");
SelectionSort(a, 100);
for ( i = 1; i < 101; ++i ){
printf( "%3d ", a[i-1] );
if(i%15==0) printf("n");
}
getch();
return 0;
}
运行效果图
最后
以上就是迷你蜻蜓为你收集整理的分治法之合并排序(C实现)的全部内容,希望文章能够帮你解决分治法之合并排序(C实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复