导航:首页 > 编程语言 > 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归并排序非递归相关的资料

热点内容
怎么让电脑显示隐藏文件 浏览:254
如何删除xp的帐号密码 浏览:182
linux一般安装在哪个文件夹 浏览:84
wap文件怎么没有显示0 浏览:126
汇编程序的流程图怎么画 浏览:642
手机excel文件怎么写字 浏览:476
注册建立一个网站要多少钱 浏览:195
高平编程哪里学 浏览:926
银川编程培训哪个好 浏览:767
手机版本23小鸡模拟器 浏览:596
哪个网站可以写手交流的书评 浏览:112
桌面文件夹哪里有卖 浏览:870
系统备份过后找不到文件 浏览:555
ke2070图像数据在哪里设置 浏览:558
一些小的视频网站怎么赚钱 浏览:671
手机文件管理多了几千张图片 浏览:51
odex文件权限 浏览:678
c语言程序设计迷宫 浏览:692
js获取主机名称 浏览:3
京东物流的app有哪些 浏览:244

友情链接