[英]Why does this bubble sorting algorithm work in Javascript but not in Python?
在 Javascript 中,您可以使用這樣的數組排序器
function sorter(array) {
var done = false
while (!done) {
for (i=0; i < array.length; i++) {
done = true;
if (array[i-1] > array[i]) {
done = false;
var tmp = array[i-1];
array[i-1] = array[i];
array[i] = tmp;
}
}
}
return array;
}
var index = [3, 8, 2, 4, 213, 5, 23, 75,23, 43];
sorter(index);
console.log(index);
當我想把這段代碼轉換成 python 時,我意外地得到了一個無限循環的計算,可能是因為我對 python 不是很熟悉。
def sorter(array):
done = False
while (done == False):
for i in range(len(array)):
done = True
if array[i-1] > array[i]:
done = False
tmp = array[i-1]
array[i-1] = array[i]
array[i] = tmp
return array
index = [2, 35, 6, 4, 8, 7]
sorter(index)
print(index)
是的,問題是您對 Python 的了解不夠好。 你的循環限制是錯誤的:
for i in range(len(array)):
在此循環的第一次迭代中,i=0,因此 i-1 為 -1。
array[-1] 是列表的最后一個元素。 因此,每次重新開始時,您都將列表的最后一個元素與第一個元素交換,並且必須將其冒泡到最后,永遠不會完成。
任何簡單的程序跟蹤都會向您展示效果。 請參閱這個可愛的調試站點尋求幫助。
修理
for i in range(1, len(array)):
或者你可以這樣做:
def sorter(array):
a = array.sort()
return a
index = [2, 35, 6, 4, 8, 7]
sorter(index)
print(index)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.