資料結構——線性表P35.1

Aliena_Lxr發表於2020-12-28

1.設順序表用陣列AD表示,表中元素儲存在陣列下標0~ m+n-1的範圍內,前m個元素遞增有序,後n個元素也遞增有序,設計一個演算法,使得整個順序表有序。

分析:
將陣列A[]中的m+n個元素(假設元素為int型)看成兩個順序表:表L和表R。將陣列當前狀態看作起始狀態,即此時表L由A[]中前m個元素構成,表R由A[]中後n個元素構成。要使A[]中m+n個元素整體有序,只需將表R中的元素逐個插入表L中的合適位置即可。
插入過程: 取表R中的第一個元素A[m]存入輔助變數temp中,讓temp逐個與A[m-1],…,A[0]進行比較,當temp<A[] (0≤j≤m-1)時,將A[j]後移-位, 否則將temp存入A[j+1]中。
重複上述過程繼續插入A[m+1], A[m+2], … A[m+n], 最終A[]中元素整體有序。

#include <iostream>
using namespace std;

void insertElem(int A[], int m, int n)
{
	int i, j;
	int temp;

	for (i = m; i < m + n; ++i)
	{
		temp = A[i];
		for (j = i - 1; j >= 0 && temp < A[j]; --j)
			A[j+1] = A[j];
		A[j + 1] = temp;
	}
} 

int main()
{
	int A[5] = { 6,7,4,5,6 };
	insertElem(A,2, 3);
	for (int i = 0; i < 5; ++i)
		cout <<" "<< A[i];
}

相關文章