簡體   English   中英

在python中使用Key進行插入排序

[英]Insertion Sort in python using Key

def insertion_sort2(A):
  for i in range(1,len(A)):
      key = A[i]
      j = i-1
      for j in range(i-1,0,-1):
          if A[j] > key :
              A[j+1] = A[j]
          else:
              A[j+1] = key
              break

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

    key = arr[i]

    j = i-1
    while j >=0 and key < arr[j] :
        arr[j+1] = arr[j]
        j -= 1
    arr[j+1] = key

你好,我已經嘗試過兩種方法在 c++ 中進行簡單的插入排序它有效,但在 python 中它不起作用,但它們都給出了像第一個這樣的答案:

[56, 77, 77, 77, 77, 77, 77, 99]

第二個:甚至不排序

注意:第二個在break后開始,我沒有同時運行它們,我注釋掉一個然后運行另一個

首先,您不會在內循環中到達數組中的第 0 個元素。 在 python 的 range 函數中,范圍在第二項之前計數到 1。 在放置 range(i-1,-1,-1) 時,范圍變為 i-1 到 0。其次,您沒有交換兩個連續的元素,只是將第 (j) 個元素的值分配為 (j+1)th元素。 但是如何將第 j 個值分配給第 (j-1) 個元素。 第三,執行 A[j+1] = key 沒有任何意義,因為它已經是關鍵。

def insertion_sort2(A):
  for i in range(1,len(A)):
      key = A[i]
      j = i-1
      for j in range(i-1,-1,-1):
          if A[j] > key :
              A[j+1], A[j] = A[j], A[j+1]
          else:
              break

暫無
暫無

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

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