问题:将两个有序顺序表合并成一个有序顺序表。
算法思想:不断取两个顺序表表头,比较大小,将小者存入新的有序顺序表,直至其中一个表比较完毕,将另一个剩余的表全部存入新的顺序表。
如果合并后仍让原序排列:
最好情况: 其中一个有序列表 的元素 一 一对应的小于 另一个有序表的元素 ;
比较次数---min(m,n)次 时间复杂度O(min(m,n))
最坏情况: 两个表的元素交替增加 ;
比较次数---(m+n-1) 次 时间复杂度O(m+m)
如果合并后让 原序的逆序排列: 无论最好还是最坏,时间复杂度O(m+n);
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#define Maxsize 50
int flag=1; //利用变量构造两个不同的有序表
typedef struct SqList{
int* data;
int length;
};
// ---------------------------- 初始化-----------------------------
bool InitList(struct SqList* L,int length)