[英]insertion sort in python vs javascript
我使用 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);
蟒蛇代碼:
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
含義。
最后你不需要計算while hole >= 0 and nums[hole-1] > value
當hole
值為0
,所以也許將>=
更改為>
將是一個不錯的選擇。
nums[hole] = nums[hole-1]
如果hole == 0
, nums[hole-1]
變為nums[-1]
,它獲取列表的最后一個元素。 這不是它在 Javascript 中所做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.