-
热度指数:2719
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32M,其他语言64M
-
算法知识视频讲解
According to Wikipedia: Insertion sort iterates, consuming one input
element each repetition, and growing a sorted output list. Each
iteration,
insertion sort removes one element from the input data, finds the
location it belongs within the sorted list, and inserts
it there. It repeats until no input elements remain.
Merge sort works as follows: Divide the unsorted list into N sublists,
each containing 1 element (a list of 1 element is
considered sorted). Then repeatedly merge two adjacent sublists to
produce new sorted sublists until there is only 1
sublist remaining.
Now given the initial sequence of integers, together with a sequence
which is a result of several iterations of some
sorting method, can you tell which sorting method we are using?
输入描述:
Each input file contains one test case. For each case, the first line gives a positive integer N (<=100). Then in the next line, N integers are
given as the initial sequence. The last line contains the partially sorted sequence of the N numbers. It is assumed that the target
sequence is always ascending. All the numbers in a line are separated by a space.
输出描述:
For each test case, print in the first line either "Insertion Sort" or "Merge Sort" to indicate the method used to obtain the partial result.
Then run this method for one more iteration and output in the second line the resulting sequence. It is guaranteed that the answer is
unique for each test case. All the numbers in a line must be separated by a space, and there must be no extra space at the end of the
line.
示例1
输入
10<br/>3 1 2 8 7 5 9 4 6 0<br/>1 2 3 7 8 5 9 4 6 0
输出
Insertion Sort<br/>1 2 3 5 7 8 9 4 6 0
即前K个数组如果是有序的,那么剩余的N-K个数保存原来的顺序和位置。
例如:
原:3 1 28 7 5 9 4 6 0
新:1 2 3 7 8 5 9 4 6 0
在新数组中,{1,2,3}是有序的,{5,9,4,6,0}保持原样,因此它是插入排序后的的部分过程,否则为归并排序的部分过程。
如果是插入排序,接着从5开始调用插排序即可。
如果是归并排序,那么开头2^x个数据是有序,接着把数组每2^(x+1)个数据排序即可。