问题描述
Problem Description
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
Input
输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。
Output
对于每个测试实例,输出插入新的元素后的数列。
Sample Input
3 3
1 2 4
0 0
Sample Output
1 2 3 4
问题分析
Problem Analyse
本题是为C语言初学者提供的。
Algorithm Analyse
本题目其实就是让你实现一次插入排序。
插入排序的工作机理与很多人打牌时,整理手中牌时的做法差不多。在开始摸牌时,我们的左手是空的,牌面朝下放在桌上。
接这,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上。为了找到这张牌的正确位置,要将它与手中已有的每一张牌从右到左地进行比较。
无论在什么时候,左手中的牌都是排好序的,而这些牌原先都是桌上那副牌里最顶上的有一些牌。
下面是插入排序的伪代码:
INSERTION-SORT(A) 1 for j←2 to length[A] 2 do key←A[j] 3 /*Insert A[j]into the sorted sequence A[1..j-1].*/ 4 i←j - 1 5 while i>0 and A[j]>key 6 do A[i+1]←A[i] 7 i←i - 1 8 A[i+1]←key
算法实现
根据算法描述里的伪代码使用自己熟悉的语言实现。本题的要求更简单,只要做一趟插入排序就可以了!试试看,祝你好运!