[英]How do I use merge sort to sort high scores out?
def sort(data):
if len(data) > 1:
midpoint = int(len(data) / 2)
left, right = sort(data[:midpoint]), sort(data[midpoint:])
sort(left, right)
def sort(left, right):
result = []
left_pointer = right_pointer = 0
while left_pointer < len(left) and right_pointer < len(right):
result.append(left[left_pointer])
left_pointer += 1
else:
result.append(right[right_pointer])
right_pointer += 1
result.extend(left[left_pointer:])
result.extend(right[right_pointer:])
return result
sort([3, 1, 2])
我需要做的任務是以下“游戲的下一個問題是高分表:它沒有排序。這需要修復。因此,這個任務是將您選擇的排序算法實現到 task2_sort.py . 我們將根據您實現的算法的復雜程度給予分數。因此,實現歸並排序將比冒泡排序獲得更多的分數,但是您可以自由地實現通常更快的算法,例如快速排序。
高分由以下形式的列表組成:[[score1, name1], [score2, name2], ... ],其中 score 是您需要排序的值,name 是一個字符串。 訪問數據類似於索引列表,但是您需要通過索引子列表的第零個元素來訪問每個元素的分數。
例如,訪問數據的第一個元素是data[0][0],數據的第二個元素是data[1][0]。 該任務說明了我還需要做什么才能使它正常工作 iv 一直在網上尋找多年,但它只顯示了如何在另一個文件中執行此操作”
游戲啟動,但當你玩完游戲時,游戲崩潰 這是錯誤“第 55 行,添加 self.score_data = sort(self.score_data) TypeError:sort() 缺少 1 個必需的位置參數:'right'”
如果您定義了一個變量,然后給它一個新值,那么舊值就會消失(或者至少您無法訪問)。
x = 5
x = 3
print(x)
3個
函數也是如此。 函數是對象,“sort”這個名字只能指代其中之一。
def sort(data):
print ('sort was called with one argument')
data.sort()
def sort(left, right):
print ('sort was called with two arguments')
return left + right
data = [5, 1, 3, 4, 2]
sort(data)
print(data)
builtins.TypeError: sort() 缺少 1 個必需的位置參數:'right'
如果我們看上面,我們會看到 python 是正確的。 您將排序定義為左右取兩個 arguments。 另一種類型不再可用,因為它的名稱已被重復使用。
通常 mergesort 會使用一個名為“merge”的助手 function,但你稱它為“sort”,因此無法訪問以前稱為“sort”的 function
我懷疑您期望 c++ 多態性,但那不是 python。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.