簡體   English   中英

為什么這個冒泡排序算法在 Javascript 中有效,但在 Python 中無效?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM