while ( ilength && jlength )
{
if (A>date[i]date[j]) *C>data[k++]=A>data[i++];
else *C>data[k++]=B>data[j++];
}/*while */
while (ilength ) /*B已扫描完则将A的余下部分复制到C中*/
*C>data[k++]= A>data[i++];
while (jlength ) /*A已扫描完则将B的余下部分复制到C中*/
*C>data[k++]= B>data[j++];
*C>length=k;
return(); /*合并成功*/
}
本算法的时间复杂度是O(m+n)其中m是线性表A的表长n是线性表B的表长
【例】 约瑟夫问题设由n个人围坐在一个圆桌周围现从第s个人开始从报数数到m的人出列然后从出列的下一个人重新开始从报数数到m的人再出列……如此反复直到所有的人都出列求出出列的次序要求用顺序表求解
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []