本算法中時間主要消耗在for循環上的元素與元素之間的交換該循環的循環次數為 n/ 次所以其時間復雜度為O(n)
【例】有順序表A和B其元素均按從小到大的升序排列編寫一個算法將它們合並成一個順序表C要求C的元素也是從小到大的升序排列
算法思路依次掃描A和B的元素比較線性表A和B當前元素的值將較小值的元素賦給C如此直到一個線性表掃描完畢然後將未完的那個順序表中余下部分賦給C即可要求線性表C的容量要大於線性表A和B長度之和
具體算法描述如下
int merge_SeqList (PSeqList A PSeqList B PSeqList *C)
{ /*將兩個遞增的順序表合並成一個遞增的順序表*/
/*入口參數指向三個順序表的指針返回標志表示失敗表示成功*/
int ijk;
i=;j=;k=;
*C=Init_SeqList(); /* 建立新表並初始化 */
if(!*C)
{
printf(C表不存在);
return();
}
if (A>length+B>length>=MAXSIZE)
{
printf(C表空間不足);
return();
}
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23642.html