合并排序(递归法)5
来源:互联网 发布:千牛卖家数据访客 编辑:程序博客网 时间:2024/05/29 04:53
/*arry[100]
mergesort(s,e){
s1=s;
s2=(s+e)/2+1;
e1=s2-1;
e2=e;
if(s<e){
mergesort(s1,e2);
mergesort(s2,e2);
merge(s1,s2,e21,e2);
}
else return ;
递归错误,把函数入口数据输出*/
#include<stdio.h>
int arry[100],n;
int temp[55];
void merge(int s1,int s2,int e1,int e2)
{
int i=s1,j=s2,k=0;
while(i<=e1&&j<=e2){
if(arry[i]<=arry[j]){
temp[k++]=arry[i];
i++;
}
else {
temp[k++]=arry[j];
j++;
}
}
if(i>=e1+1&&j<=e2){
while(j<=e2)
temp[k++]=arry[j++];
}
else if(j>=e2+1&&i<=e1){
while(i<=e2)
temp[k++]=arry[i++];
}
i=0;
j=s1;
while(i<k-1){
arry[j++]=temp[i++];
}
}
void mergesort(int s,int e)
{
int s1,s2,e1,e2;
if(s<e){
s1=s;
e1=(s+e)/2;
s2=e1+1;
e2=e;
mergesort(s1,e1);//putchar('s');
mergesort(s2,e2);
merge(s1,s2,e1,e2);
//putchar('v');
}
//else {putchar('T');return ;}
}
main()
{
int i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&arry[i]);
mergesort(0,n-1);
for(i=0;i<n;i++)
printf("%d ",arry[i]);
return 0;
}
- 合并排序(递归法)5
- 合并排序(递归)
- 分治法 合并排序递归
- 合并排序(分治递归)
- 合并排序(归并排序)的递归和非递归
- 合并排序(递归分治 + 泛型)
- 递归的合并排序
- 递归合并排序
- 递归合并排序
- 非递归合并排序
- 递归合并排序
- 非递归合并排序
- 递归实现合并排序
- 递归之合并排序
- 合并排序-递归分治
- 合并排序-非递归
- 非递归归并排序(二路合并排序),非递归合并排序
- 排序(2)归并排序(递归、合并排序)
- 浅谈Sql 死锁(Dead Lock)
- GDI绘图类示例代码-CFont CPen CBrush
- linux c 信号量编程
- Win32DLL编写与调用模板
- 第四军医大学唐都学院
- 合并排序(递归法)5
- MFC-DLL示例介绍
- Android交互对话框
- MFC-DLL构建完整示例(内含知识点不少)
- matlab 中配置libsvm 的方法。。。。
- android小菜入门详解
- 客户区窗口动态分割示例
- wince开机画面
- android Menu和android Intent使用。