问题
已知在一位数组A[m+n]中依次存放两个线性表(a1, a2, ……, am)和(b1, b2, ……, bn)。设计算法将数组中两个顺序表的位置互换,即将(b1, b2, ……, bn)放在(a1, a2, ……, am)前面。(注:顺序表是用一组地址连续的存储单元依次存储线性表中的数据元素,上述两s题可以用数组实现。)
题解
复杂度: 时间复杂度O(n) 空间复杂度O(1):
算法思想: 
cpp代码:
#include <iostream>using namespace std;void print_array(int * parr, int n){for (int i = 0 ; i < n ; i ++)cout << * (parr + i) << " ";cout << endl;};int main() {int A[20];for(int i = 0;i < 20; i ++ )A[i] = i + 1;//输入一个线性表. 这一步可以替换。下面喂实现算法。以m=14 n=6为例int m = 14,n=6;int * parr = &A[0];print_array( &A[0],20);while(n >= 1 and m >= 1){int iter_num = min(m,n);for(int i = 0;i < iter_num ;i ++){int temp = * (parr + i);* (parr + i) = * (parr + m + i);* (parr + m + i ) = temp;}if(m >= n){parr = parr + n ;m = m - n;}else{parr = parr + m;n = n - m;}}print_array( &A[0],20);}
