为什么这个冒泡排序算法在Javascript中有效而在Python中无效?

为什么这个冒泡排序算法在Javascript中有效而在Python中无效?,javascript,python,Javascript,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]; ar

在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了解不够。您的循环限制错误:

    for i in range(len(array)):
在这个循环的第一次迭代中,i=0,所以i-1是-1

数组[-1]是列表的最后一个元素。因此,每次重新开始时,都会将列表中的最后一个元素与第一个元素交换,并且必须将其冒泡回末尾,永远不会结束

对程序的任何简单跟踪都会向您显示效果。请看这个以寻求帮助


修理

    for i in range(1, len(array)):

是的,问题是您对Python了解不够。您的循环限制错误:

    for i in range(len(array)):
在这个循环的第一次迭代中,i=0,所以i-1是-1

数组[-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)
或者您可以这样做:

def sorter(array):
    a = array.sort()
    return a


index = [2, 35, 6, 4, 8, 7]
sorter(index)
print(index)

Javascript代码也包含此错误,因此这修复了问题,但没有完全解释问题。谢谢,我们都只是在学习:)Javascript代码也包含此错误,因此这修复了问题,但没有完全解释问题。谢谢,没有痛苦的感觉,我们都只是在学习:)我知道这是存在的。然而,我想尝试使用一个没有这个函数的算法。我知道这是存在的。然而,我想尝试使用一个没有这个函数的算法。