插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,
对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
# @Date: 2018-4-10 # @Project: 算法 # @Filename: insertion_sort.py # @Last modified time: 2018-4-10 # @Copyright: 网址:www.168seo.cn 微信公众号:zeropython def insertion_sort(new_list): """ 插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列, 对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 """ n = len(new_list) for i in range(1,n): # 控制将拿到的元素放到前面有序序列中正确位置的过程 # print(i, new_list) for j in range(i,0,-1): print("外层",i,"内层",j,new_list) if new_list[j] < new_list[j-1]: # 如果比前面的元素小,则往前移动 new_list[j],new_list[j-1] = new_list[j-1],new_list[j] else: # 否则代表比前面的所有元素都小,不需要再移动 break if __name__ == '__main__': alist = [54, 26, 93, 77, 44, 31, 44, 55, 20] insertion_sort(alist) print(alist)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
# @Date: 2018-4-10
# @Project: 算法
# @Filename: insertion_sort.py
# @Last modified time: 2018-4-10
# @Copyright: 网址:www.168seo.cn 微信公众号:zeropython
def
insertion_sort
(
new_list
)
:
"""
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,
对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
"""
n
=
len
(
new_list
)
for
i
in
range
(
1
,
n
)
:
# 控制将拿到的元素放到前面有序序列中正确位置的过程
# print(i, new_list)
for
j
in
range
(
i
,
0
,
-
1
)
:
print
(
"外层"
,
i
,
"内层"
,
j
,
new_list
)
if
new_list
[
j
]
<
new_list
[
j
-
1
]
:
# 如果比前面的元素小,则往前移动
new_list
[
j
]
,
new_list
[
j
-
1
]
=
new_list
[
j
-
1
]
,
new_list
[
j
]
else
:
# 否则代表比前面的所有元素都小,不需要再移动
break
if
__name__
==
'__main__'
:
alist
=
[
54
,
26
,
93
,
77
,
44
,
31
,
44
,
55
,
20
]
insertion_sort
(
alist
)
print
(
alist
)
|