代码结构,调试的心力交瘁。第二个测试点还是无法通过,主要问题是在插入排序上。例如当输入 3 1 3 2 1 3 2 时,这里存在歧义。但是很明显题目将它判定为第二次遇到 1 3 2,所以此时要输出 1 2 3,而不是 1 3 2。
N = input()
s1 = input()
s2 = input()
s3 = s2
num = []
num = list(s1.split())
#插入排序:
num_sort = []
num_sort.append(num[0])
i = 1
j = 0
s2 += ' '
flag = 0
while i < len(num):
s = ''
for item in num_sort:
s += str(item) + ' '
k = i
while k < len(num):
s += str(num[k]) + ' '
k += 1
if flag == 1:
# if T == 1:
# j = 0
# if i == len(num):
# i = i -1
# while j < len(num_sort):
# if int(num[i]) > int(num_sort[-1]):
# num_sort.append(num[i])
# break
# if int(num[i]) < int(num_sort[j]) and int(num[i]) > int(num_sort[j - 1]):
# num_sort.insert(j, num[i])
# break
# j += 1
# i += 1
s = ''
for item in num_sort:
s += str(item) + ' '
k = i
while k < len(num):
s += str(num[k]) + ' '
k += 1
print("Insertion Sort")
s = s[0 : -1]
print(s)
exit(0)
if s == s2:
flag = 1
j = 0
while j < len(num_sort):
if int(num[i]) > int(num_sort[-1]):
num_sort.append(num[i])
break
if int(num[i]) < int(num_sort[j]):
num_sort.insert(j, num[i])
break
j += 1
i += 1
#归并排序
def sort_list(list_1, list_2):
i, j = 0, 0
L = []
while i < len(list_1) and j < len(list_2):
if list_1[i] < list_2[j]:
L.append(list_1[i])
i += 1
else:
L.append(list_2[j])
j += 1
if i < len(list_1):
L += list_1[i : ]
if j < len(list_2):
L += list_2[j : ]
List.append(L)
def cut_list(l):
i = 0
if str(type(l[i])) == "<class 'int'>":
if len(l) % 2 == 0:
while i < len(l):
Lt = []
if l[i] < l[i + 1]:
Lt.append(l[i])
Lt.append(l[i+1])
List.append(Lt)
else:
Lt.append(l[i + 1])
Lt.append(l[i])
List.append(Lt)
i += 2
else:
while i < len(l) - 1:
Lt = []
if l[i] < l[i + 1]:
Lt.append(l[i])
Lt.append(l[i+1])
List.append(Lt)
else:
Lt.append(l[i + 1])
Lt.append(l[i])
List.append(Lt)
i += 2
Lt = []
Lt.append(l[-1])
List.append(Lt)
else:
if len(l) % 2 == 0:
while i < len(l):
sort_list(l[i], l[i + 1])
i += 2
else:
while i < len(l) - 1:
sort_list(l[i], l[i + 1])
i += 2
List.append(l[-1])
num_list = []
for item in num:
num_list.append(int(item))
List = []
cut_list(num_list)
Flag = 0
while len(List) != 1:
List_main = List
str_List = str(List_main)
str_List = str_List.replace('[', '')
str_List = str_List.replace(']', '')
str_List = str_List.replace(',', '')
if str_List == s3:
Flag = 1
List_main = List
List = []
cut_list(List_main)
if Flag == 1:
str_List = str(List)
str_List = str_List.replace('[', '')
str_List = str_List.replace(']', '')
str_List = str_List.replace(',', '')
print("Merge Sort")
print(str_List)
exit(0)