def get_list(list):
my_list = []
for i in list:
i = int(i)
my_list.append(i)
return my_list
def get_insertion(fir_list, last_list, num):
flag = 0
#fir_list.append('-9999')
for i in range(num):
if last_list[i] > last_list[i + 1]:
flag = i + 1
break
#fir_list.pop(-1)
if fir_list[flag:] == last_list[flag:]:
list = last_list[:flag + 1]
list.sort()
fir_list = list + last_list[flag + 1 :]
return True, fir_list
else:
return False, []
def get_next_list(fir_list_1, num, k):
i = 0
j = i + k + 1
my_list = []
while i <= num:
list = []
list = fir_list_1[i:j]
list.sort()
i = j
j = i + k + 1
my_list += list
#print(list)
return my_list
num = int(input())
fir_list, last_list = input(), input()
fir_list_1, last_list_1 = fir_list.split(), last_list.split()
fir_list_2, last_list_2 = fir_list.split(), last_list.split()
fir_list_1 = get_list(fir_list_1)
fir_list_2 = get_list(fir_list_2)
last_list_1 = get_list(last_list_1)
last_list_2 = get_list(last_list_2)
list = fir_list.split()
list = get_list(list)
list.sort()
if list == last_list_1:
pass
else:
flag, result_list = get_insertion(fir_list_1, last_list_1, num)
if flag:
print("Insertion Sort")
for i in result_list:
if i == result_list[-1]:
print(i)
else:
print(str(i) + ' ', end = '')
else:
print("Merge Sort")
flag = 0
i = 0
while i < num:
k = 2 * i + 1
list = get_next_list(fir_list_2, num, k)
if list == last_list_2:
i = k
k = 2 * i + 1
list = get_next_list(fir_list_2, num, k)
break
i = k
for i in list:
if i == list[-1]:
print(i)
else:
print(str(i) + ' ', end = '')
PAT1035. 插入与归并
最新推荐文章于 2024-09-28 01:00:00 发布