1
可以理解的是,爲合併排序算法和倒數計數創建了多個線程。雖然這是coursera課程的作業問題,但我很難理解在計算反轉次數時我的實現出錯的地方。與其他參加課程的人相比,我似乎對少數測試示例的測試數據看起來非常不切實際。 下面是我的代碼:合併排序算法 - 倒計數
count = 0
def sort_list(unsortedlist):
m = len(unsortedlist)
A_list = unsortedlist[:m/2]
B_list = unsortedlist[m/2:]
if len(A_list) > 1: # if the list is longer thn 2 items, break it up
A_list = sort_list(A_list)
if len(B_list) > 1: # breaking and sorting second part
B_list = sort_list(B_list)
return merge_sort(A_list,B_list) # merge the smaller lists to return either a-list/b_list or full_list
def merge_sort(a_list,b_list):
initiallist = a_list+b_list
final_list = []
i = 0
j = 0
global count
while len(final_list) < (len(initiallist)):
if len(a_list) != 0 and len(b_list) != 0:
if a_list[i] < b_list[j]:
final_list.append(a_list.pop(i))
elif a_list[i] > b_list[j]:
final_list.append(b_list.pop(j))
count += 1
elif a_list[i] == b_list[j]:
final_list.append(a_list[i])
final_list.append(b_list[j])
elif len(b_list) == 0 :
final_list+=a_list
elif len(a_list) == 0 :
final_list+=b_list
print count
return final_list
啊!謝謝。只是將算法寫在紙上,做了很少的測試,明白我出錯的地方。再次感謝! – durga