| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 727 人关注过本帖
标题:求助 归并排序算法
只看楼主 加入收藏
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
快速回复:求助 归并排序算法
数据加载中...
 
   



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

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