导航:首页 > 编程语言 > java归并排序非递归

java归并排序非递归

发布时间:2025-06-16 05:18:44

1. 给定一个数列,如何用归并排序算法把它排成升序,用c语言实现。

void MergeSort(int x[],int n) { //非递归归并排序
//元素数组为x,其长度为n
int i,j,k1,k2,l;
int *a;
for(i=1;i<=n-1;i=i*2)//i为插入排序的子段长度
{
for(j=1;j<=n-1;j=j+2*i)//j为进行插入排序的子段起始位置
{
a=(int *)malloc(2*i*sizeof(int));
l=0;k1=j;k2=j+i;
while((l<2*i)&&(k2<=n-1)&&(k2<j+2*i)&&(k1<j+i))
{//子段中,比较,移至辅助内存
if(x[k1]<x[k2])
{
a[l++]=x[k1];k1++;
}
else
{
a[l++]=x[k2];k2++;
}
}
if((k2>n-1)||(k2>=j+2*i))
{//子段的后一段超出数组范围
for(;k1<j+i;k1++)
a[l++]=x[k1];
}
else//就只有第一段就超数组了
{
if(k1>=j+i)
{
for(;(k2<j+2*i)&&(k2<=n-1);k2++)
a[l++]=x[k2];
}
}
for(k1=0;k1<l;k1++)//最后移位
{
x[j+k1]=a[k1];
}free(a);
}
}
}

非递归的归并排序,我以前写的。
中间malloc与free的话,是为了方便管理不定大小的空间,这里需要malloc.h的头文件

阅读全文

与java归并排序非递归相关的资料

热点内容
中国数据库发展研讨会 浏览:415
win7去掉登录密码 浏览:38
imacappleid 浏览:560
网易邮箱怎么发文件手机app 浏览:325
如何快速升级考拉 浏览:745
编程加入高考需要什么条件 浏览:602
小米手机怎么同步旧手机app的数据 浏览:253
cad版本不同会显示外来文件吗 浏览:538
卸载ps提示有正在使用的文件 浏览:165
忘记路由器wifi密码 浏览:390
5s升级103 浏览:140
博图v13上载程序 浏览:142
有什么夜晚网站 浏览:115
win10环境配置在哪个文件夹 浏览:949
文件王测试视频 浏览:874
易语言图片框显示文件夹的相片 浏览:211
如何通过数据网络发短信 浏览:423
电脑导入u盘文件在哪里 浏览:334
手机文件应用包去哪里找 浏览:350
为什么统计数据尺码不出来 浏览:36

友情链接