[英]Python 2.7 Bubble Sort
我試圖使我的程序對csv文件中記錄的分數進行排序,我的過程是將csv文件讀入列表,對列表進行冒泡排序,然后用新列表覆蓋csv文件。 但是,我的代碼遇到了邏輯錯誤。 當我對列表進行排序時,結果為[[], ['190'], ['200'], ['250'], ['350'], ['90']]
。
如果有人可以幫助,將不勝感激。 這是我的代碼以供閱讀和氣泡排序。
import csv
def bubbleSort(scores):
for length in range(len(scores)-1,0,-1):
for i in range(length):
if scores[i]>scores[i+1]:
temp = scores[i]
scores[i] = scores[i+1]
scores[i+1] = temp
with open ("rec_Scores.csv", "rb") as csvfile:
r = csv.reader(csvfile)
scores = list(r)
bubbleSort(scores)
print(scores)
這是我第一次在python中實現排序,因此任何幫助都將非常感謝。
看來您在分數列表中使用的是字符串。 如果您希望這種排序正常工作,則需要將值轉換為整數:
int(str_num)
其中str_num
是您的字符串值。
完成這種轉換后,這種排序應該可以正常工作。 另外,您可以使用內置的音序器通過以下方式對電話號碼進行排序
scores.sort()
然后,您不必擔心實現自己的算法。
您正在比較字符串而不是整數。 使用int(scores[i])
將字符串轉換為整數。
經過進一步檢查,您似乎將數字存儲在列表中。 在這種情況下,要訪問第一個數字,我們必須執行scores[0][0]
,第二個數字將是scores[1][0]
,依此類推...第一個索引以一個增量遞增,因此我們可以使用int(scores[i][0]
。
第二個數字保持為0,因為看起來您只在內部列表中存儲了一個整數。
您可以嘗試以下方法:
import csv
with open ("rec_Scores.csv", "rb") as csvfile:
r = csv.reader(csvfile)
scores = [int(item) for item in list(r)]
print(sorted(scores))
scores= list(r);
intscores = [0]*scores.len()
for str in scores:
intscores.append(int(str))
intscores.sort()
這應該做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.