Python 插入排序
插入排序,是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
def insertionSort(list): for i in range(1,len(list)): point=list[i] print('point:',point,'i:',i) for j in range(i-1,-1,-1): print('---------',j) if point < list[j]: list[j+1],list[j] = list[j] ,list[j+1] print('list[j+1]',list[j+1],'j:',j) print(list) else: break return list arr = [12, 11, 13,45, 5, 6,20,1,56 ,2,3] aa=insertionSort(arr) print(aa)
结果:只显示当poont=3 时打印结果
point: 3 i: 10
----j----- 9
list[j+1] 56 j: 9
[1, 2, 5, 6, 11, 12, 13, 20, 45, 3, 56]
----j----- 8
list[j+1] 45 j: 8
[1, 2, 5, 6, 11, 12, 13, 20, 3, 45, 56]
----j----- 7
list[j+1] 20 j: 7
[1, 2, 5, 6, 11, 12, 13, 3, 20, 45, 56]
----j----- 6
list[j+1] 13 j: 6
[1, 2, 5, 6, 11, 12, 3, 13, 20, 45, 56]
----j----- 5
list[j+1] 12 j: 5
[1, 2, 5, 6, 11, 3, 12, 13, 20, 45, 56]
----j----- 4
list[j+1] 11 j: 4
[1, 2, 5, 6, 3, 11, 12, 13, 20, 45, 56]
----j----- 3
list[j+1] 6 j: 3
[1, 2, 5, 3, 6, 11, 12, 13, 20, 45, 56]
----j----- 2
list[j+1] 5 j: 2
[1, 2, 3, 5, 6, 11, 12, 13, 20, 45, 56]
----j----- 1
break
最终结果 [1, 2, 3, 5, 6, 11, 12, 13, 20, 45, 56]
人家写的:
1 def insertionSort(arr): 2 for i in range(1, len(arr)): 3 key = arr[i] 4 print('key:',key,'i=',i) 5 j = i - 1 6 print('--- j ---',j) 7 while j >= 0 and key < arr[j]: 8 arr[j + 1] = arr[j] 9 print('arr[j + 1]',arr[j + 1],'j:',j) 10 print(arr) 11 j -= 1 12 print('j=',j) 13 arr[j + 1] = key 14 print('shuzu',arr) 15 print(' ') 16 return arr 17 arr = [12, 11, 13,45, 5, 6,20,1,56 ,2,3] 18 print("排序后的数组:",insertionSort(arr) )
结果:只显示当key: 3 i= 10 时的打印结果
--- j --- 9
arr[j + 1] 56 j: 9
[1, 2, 5, 6, 11, 12, 13, 20, 45, 56, 56]
arr[j + 1] 45 j: 8
[1, 2, 5, 6, 11, 12, 13, 20, 45, 45, 56]
arr[j + 1] 20 j: 7
[1, 2, 5, 6, 11, 12, 13, 20, 20, 45, 56]
arr[j + 1] 13 j: 6
[1, 2, 5, 6, 11, 12, 13, 13, 20, 45, 56]
arr[j + 1] 12 j: 5
[1, 2, 5, 6, 11, 12, 12, 13, 20, 45, 56]
arr[j + 1] 11 j: 4
[1, 2, 5, 6, 11, 11, 12, 13, 20, 45, 56]
arr[j + 1] 6 j: 3
[1, 2, 5, 6, 6, 11, 12, 13, 20, 45, 56]
arr[j + 1] 5 j: 2
[1, 2, 5, 5, 6, 11, 12, 13, 20, 45, 56]
j= 1
shuzu [1, 2, 3, 5, 6, 11, 12, 13, 20, 45, 56]
排序后的数组: [1, 2, 3, 5, 6, 11, 12, 13, 20, 45, 56]
当你的才华撑不起你的野心时,你需要静下心来学习。
浙公网安备 33010602011771号