数据结构题典008:顺序表的合并(ANSI C)

来源:互联网 发布:幻灯片音乐软件 编辑:程序博客网 时间:2024/04/28 17:42

题意:设有顺序表La和Lb,二者中元素均为非递减有序,空间足够大。设计算法将Lb中的元素合并到La中,使新的La元素仍非递减有序。

分析:此题与将两个有序顺序表合并到第三个顺序表中的思路类似,只是为了减少移动次数,比较的次序从两线性表的尾部开始,这样每个元素最多只移动一次。

/* * merging of two ordered sequences * * fduan, Dec. 27, 2011. */void merge_array( int a[], int b[], int len, int m, int n ){int * pa = a + m - 1, * pb = b + n - 1, * p = a + m + n - 1;assert( len >= m + n );while( pa >= a && pb >= b )*p-- = ( *pa >= *pb ) ? *pa-- : *pb--;while( pa >= a )*p-- = *pa--;while( pb >= b )*p-- = *pb--;}

原创粉丝点击