讓一個前後有序的順序表整體有序
阿新 • • 發佈:2018-11-05
#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); }