簡體   English   中英

python與javascript中的插入排序

[英]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] > valuehole值為0 ,所以也許將>=更改為>將是一個不錯的選擇。

  nums[hole] = nums[hole-1]

如果hole == 0nums[hole-1]變為nums[-1] ,它獲取列表的最后一個元素。 這不是它在 Javascript 中所做的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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