[英]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.