排序算法-------插入排序(python3实现)


插入排序
定义:是一种简单直观且稳定的排序算法。
分类:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序。

 1 def InsertSort(arrs):
 2 """
 3 插入排序
 4 :param arrs: 待排序列
 5 
 6 index:有序序列尾元素下标
 7 value:有序序列尾元素值
 8 """
 9 for i in range(1, len(arrs)):
10     index = i - 1
11     value = arrs[i]
12 
13     while index >= 0 and arrs[index] > value:
14 # 将待插入元素依次与有序序列比较(从右至左),
15 # 直到找到有序序列中某一元素小于待插入元素或者没有找到比待插入元素小的值;
16         arrs[index + 1] = arrs[index]
17         index -= 1
18 
19 # 将待插入的元素,插入到有序系列中:
20 # 若找到有序序列中某一个元素小于待插入元素,则将待插入元素插入到该元素后面;
21 # 若在有序序列中没有找到大于待插入元素的值,则将待插入元素位置不变;
22 arrs[index + 1] = value
23 
24 arr = [5, 3, 8, 2, 9, 7, 3, 1]
25 InsertSort(arr)
26 print(arr)
27 
28 
29 ---------------------------
30 
31 方法一
32 def func(L):
33     for i in range(1,len(L)):
34     index=i-1
35     value=L[i]
36     while index>=0 and L[index]>value:
37         L[index+1]=L[index]
38         index-=1
39     L[index+1]=value
40 
41 L=[1,9,5,1,2,7,3]
42 func(L)
43 print(L)
44 
45 执行结果:
46 >>> print(L)
47 [1, 1, 2, 3, 5, 7, 9]
48 >>>
49 
50 方法二
51 def func(L):
52 for i in range(1,len(L)):
53     value=L[i]
54     while L[i-1]>value:
55         L[i]=L[i-1]
56         i-=1
57     L[i]=value
58 
59 
60 L=[1,8,5,1,2,7,3]
61 func(L)
62 print(L)
63 
64 执行结果:
65 >>> func(L)
66 >>> print(L)
67 [1, 1, 2, 3, 5, 7, 8]
68 >>>
69 
70 
71 方法三
72 def func(L):
73     for i in range(1,len(L)):
74         value=L[i]
75         for j in range(i,-1,-1):
76             if L[j-1]>value:
77                 L[j]=L[j-1]
78             else:
79                 break
80 L[j]=value
81 
82 L=[1,6,8,3,6]
83 func(L)
84 print(L)
85 执行结果:
86 >>> func(L)
87 >>> print(L)
88 [1, 3, 6, 6, 8]
89 >>>
90 
91  

 

posted @ 2020-02-15 17:33  进阶的淑琴  阅读(173)  评论(0)    收藏  举报