标题:求助 归并排序算法
只看楼主
huamao687a
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-14
 问题点数:0 回复次数:1 
求助 归并排序算法

归并排序算法:

用两路归并算法,实现N个无素的排序
希望各位高手来指导小弟不要吝啬

搜索更多相关主题的帖子: 算法 
2005-12-14 14:05
shuzhihai
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-4-23
得分:0 

#include<stdio.h>
void csort(int,int); //归并排序
void comf(int,int,int); //将数整理成有序数列
#define N 10000
int a[N],b[N];
int main()
{
int i,n;
scanf("%d",&n);
if(n<N)
{
for (i=0;i<n;i++)
scanf("%d",&a[i]);
csort(0,n-1);
for(i=0;i<n;i++)
printf("%d\n",a[i]);
}
else
return 0;
}//main

void csort(int low,int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
csort(low,mid);
csort(mid+1,high);
comf(low,mid,high);
}
}//csort

void comf(int low,int mid,int high)
{
int p=low,q=mid+1;
int r=low;
while(p<=mid&&q<=high)
{
if(a[p]<a[q])
b[r++]=a[p++];
else b[r++]=a[q++];
}
if(p<=mid)
{
while(r<=high)
b[r++]=a[p++];
}
else
{
while(r<=high)
b[r++]=a[q++];
}
for(r=low;r<=high;r++)
a[r]=b[r];
}//comf

vc++通过了……

2007-04-23 21:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-38110-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.220948 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved