//陣列回圈方式
void MergeList_Sq(int[] La,int Lb,int[] Lc)
{
int pa,pb,pc,pa_last,pb_last;
pa=pb=pc=0;
pa_last=La.length-1; //指到La表的最后一個元素地址
pb_last=Lb.Length-1; //指到Lb表的最后一個元素地址
while(pa<=pa_last && pb<=pb_last){
if(a[pa]<=b[pb]) c[pc++]=a[pa++];
else c[pc++]=b[pb++];
}
while(pa<=pa_last) c[pc++]=a[pa++];
while(pb<=pb_last) c[pc++]=b[pb++];
}
} 問題:想問下倒數第三個while起,后面是什么意思
uj5u.com熱心網友回復:
二路歸并演算法 自己看書了解這個演算法先La和Lb是已經排好序的,而且是小的在前大大在后
第一個while就是兩個鏈表還都有資料的時候,邊比較大小邊填充到Lc里面去
后個while都意思是La和Lb其中一個已經全部在Lc里面了,那么剩下的那個就不許要比較,直接往Lc里面繼續放就是了
先去了解二路歸并
然后不用電腦程式, 自己手工處理,會如何處理。
想明白了如何做二路歸并再來看代碼的實作
不明白演算法是怎么回事兒, 光看代碼有個鬼用!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/113065.html
標籤:C語言
下一篇:e的近似值
