【数据结构】归并 非降序的顺序表和链表
思想
时间复杂度(O(LA.length+LB.length))
- 两顺序表进行每个元素的比较,如果比较小的就先插入进新的数组,若一个提前遍历完另一个就直接插入进新数组,所以走完过后就是两数组的长度相加。
- 新数组初始化:2.2:顺序表不用声明两数组的长度和,直接初始化然后每一个在后面插入就行 2.7:第二种是提前建立一个两数组长度和的空间,然后用指针插入,全程没用SqList.cpp的内容。
- 判断条件:首先考虑都没遍历完,然后考虑单个遍历完。
代码
MergeSqList.h 头文件
#ifndef MERGESQLIST_H
#define MERGESQLIST_H
#include <stdio.h>
#include <stdlib.h>
#include "SqList.h"
void MergeSqList_1(SqList La, SqList Lb, SqList* Lc);
void MergeSqList_2(SqList La, SqList Lb, SqList* Lc);
#endif
MergeSqList.cpp 算法函数
#include "MergeSqList.h"
void MergeSqList_1(SqList La, SqList Lb, SqList* Lc) {
int La_len, Lb_len;
int i, j, k;
ElemType ai, bj;
i = j = 1;
k = 0;
InitList(Lc);
La_len = ListLength(La