我使用 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/