導航:首頁 > 編程語言 > 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歸並排序非遞歸相關的資料

熱點內容
w10系統怎麼發離線文件 瀏覽:731
cad樣式文件夾 瀏覽:419
聯想無線網路安裝驅動下載 瀏覽:216
怎麼讓電腦顯示隱藏文件 瀏覽: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

友情鏈接