javascript - python 与 javascript 中的插入排序

标签 javascript python algorithm insertion-sort

我使用 python 和 javascript 实现了插入排序。由于某些奇怪的原因,JS 代码可以工作,而 python 代码却不能。两种实现都应该做同样的事情。我跟踪了每一行代码,但找不到两者之间的区别。看一下您是否能发现 python 代码的不同之处。

Javascript代码:

function insertionSort(nums) {

  for (let i=0; i<nums.length; i++) {
    const value = nums[i];
    let hole = i;

    while (hole >= 0 && nums[hole-1] > value) {
      nums[hole] = nums[hole-1];
      hole = hole - 1;
    }
    nums[hole] = value;
  }
  return nums;
}


const sorted = insertionSort([5,2,1,3,6,4]);
console.log(sorted);

Python 代码:

def insertion_sort(nums):
  for i in range(0,len(nums)):
    value = nums[i]
    hole = i

    while hole >= 0 and nums[hole-1] > value:
      nums[hole] = nums[hole-1]
      hole = hole - 1

    nums[hole] = value
  return nums

sorts = insertion_sort([5,2,1,3,6,4])
print(sorts) 

最佳答案

Python 和 javascript 对于 someList[-1] 的作用有不同的想法。

在上面的代码中,您评估nums[hole-1]。当hole为零时,您编写循环的方式可以是nums[-1]。在 python 代码中,它获取列表的最后一个元素。在 javascript 代码中,这是未定义的。这对下一部分的含义有重大影响:nums[hole-1] > value 的含义。

最终,当hole的值为时,您不需要计算whilehole>=0且nums[hole-1]>value 0,所以将 >= 更改为 > 可能是一个不错的选择。

关于javascript - python 与 javascript 中的插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60029505/

相关文章:

Java Sigmoid 方法返回不正确的结果

algorithm - 二维矩阵转置法不清楚

javascript - 如何使用 JavaScript 或 CSS 仅显示 H2 标题的第一个单词

python - WSGI 应用程序引发异常

python - 查找其键与子字符串匹配的字典项

python - 检查两个 'time ranges' 是否彼此重叠

c++ - 当您只能在运行时将基类向下转换为子类时,消除 C++ 虚函数

javascript - 具有多个域的单个 Meteor 应用程序

javascript - 使用 $.getScript 加载脚本时的查询字符串参数处理

javascript - 从字符串中获取字符串的startoffset和endoffset