递归插入排序在 python 中不起作用
Recursive insertion sorting not working in python
import sys
首先创建了一个函数并将arr和n作为参数传递。
def recursiveinsertionsort(arr,n):
基础 case:when n=0 或 n=1。
if n<=1:
return
现在调用序列直到剩余的 n-1 项。
recursiveinsertionsort(arr,n-1)
temp=arr[n-1]
j=n-2
while j>=0 and arr[j+1] < arr[j]:
arr[j+1]=arr[j]
j-=1
arr[j+1]=temp
def printArray(arr,n):
for i in range(n):
print(arr[i])
arr=[15,12,26,98,45,3]
n=len(arr)
recursiveinsertionsort(arr,n)
printArray(arr,n)
输出未排序。
在您的 while 循环条件中,将 arr[j+1] < arr[j]
更改为 arr[j] > temp
。
如评论中所述,插入排序算法的工作原理是找到 temp
应该移动到数组中的位置。查看 this post 了解有关递归插入排序的更多信息。
import sys
首先创建了一个函数并将arr和n作为参数传递。
def recursiveinsertionsort(arr,n):
基础 case:when n=0 或 n=1。
if n<=1:
return
现在调用序列直到剩余的 n-1 项。
recursiveinsertionsort(arr,n-1)
temp=arr[n-1]
j=n-2
while j>=0 and arr[j+1] < arr[j]:
arr[j+1]=arr[j]
j-=1
arr[j+1]=temp
def printArray(arr,n):
for i in range(n):
print(arr[i])
arr=[15,12,26,98,45,3]
n=len(arr)
recursiveinsertionsort(arr,n)
printArray(arr,n)
输出未排序。
在您的 while 循环条件中,将 arr[j+1] < arr[j]
更改为 arr[j] > temp
。
如评论中所述,插入排序算法的工作原理是找到 temp
应该移动到数组中的位置。查看 this post 了解有关递归插入排序的更多信息。