#include <stdio.h>
/*
题目:天勤35页真题仿真1.
顺序表前m个元素递增有序,后n个元素也递增有序,
表中元素存储在下标为0至m+n-1的范围内
设计算法,使得整个顺序表递增有序
算法:
按照直接插入排序的算法,将后n个元素依次插入到前面的有序序列中
*/
#define maxlen 50
#define DATATYPE int
typedef struct{
DATATYPE arr[maxlen];
int length;
}Seqlist;
void print_SQ(Seqlist list)
{
for(int i=0;i<list.length;i++){
printf("%d ",list.arr[i]);
}
printf("\n");
}
int main(void)
{
Seqlist list = {{1,4,5,7,10,2,6,8,8,9},10};
int m = 5;//list前5个元素递增有序
int n = 5;//list后5个元素递增有序
for(int i=m;i<m+n;i++){
//elem_to_insert保存当前要插入的元素
int elem_to_insert = list.arr[i];
int j = i-1;
while(j>=0 && list.arr[j] > elem_to_insert){
//元素后移
list.arr[j+1] = list.arr[j];
--j;
}
list.arr[j+1] = elem_to_insert;
}
print_SQ(list);
}