有序表归并算法

每当一个有序表(从小到大)采用顺序表结构存储时,称为有序顺序表。假设每个顺序表中元素均不相同,将两个具有相同次序的有序顺序表归并为一个有序顺序表时的过程就称为有序顺序表的归并。算法如下所示:
#include <iostream>
using namespace std;

typedef struct
{
	int data[100];
	int length;
}SqList;

void Merge(SqList L1,SqList L2,SqList &L3)
{
	int i = 0,j = 0,k = 0;
	while (i < L1.length && j < L2.length)
	{
		if (L1.data[i] < L2.data[j])
		{
			L3.data[k] = L1.data[i];
			i++; k++;
		}
		else
		{
			L3.data[k] = L2.data[i];
			j++; k++;
		}
	}
	while (i < L1.length)
	{
		L3.data[k] = L1.data[i];
		i++; k++;
	}
	while (j < L2.length)
	{
		L3.data[k] = L2.data[j];
		j++; k++;
	}
	L3.length = k;
}
该算法的复杂度为O(m+n)m,n分别是两个顺序表的长度。
阅读更多
个人分类: 线性表结构
上一篇Range Sum Query 2D - Immutable LeetCode
下一篇在不改变顺序表元素之间的顺序的情况下,删除其中相同的元素。
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭