#定义排序数组
arr = [5,8,1,3,6,2,4,7]
#元素移动次数
count = 0
def insertSort(arr,count):
#插入排序过程,从第二个开始插入
for i in range(1,len(arr)):
#因为需要向前遍历,因而使用while操作
j = i - 1
#插入值,因为排序过程位置可能被覆盖
value = arr[i]
while j >= 0:
if arr[j] > value:
#当前下标元素大于插入值,此时当前元素后移
arr[j+1] = arr[j]
count = count + 1
else:
#找到插入位置了
break
#下标前移,找插入位置
j = j - 1 #如果放到if中,解决不了当前插入元素为最小值情况
#因为后面减了一次,所以加上补齐
arr[j+1] = value
print("\n元素交换次数: " + str(count),end=" ")
#打印数组
def printArr(arr):
for item in arr:
print(item,end=" ")
if __name__ == '__main__':
print("排序前数组:")
printArr(arr)
insertSort(arr,count)
print("\n排序后数组:")
printArr(arr)
插入排序算法(Python实现)
最新推荐文章于 2020-11-30 16:27:31 发布