Python3 实现插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,
对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

Python
# @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 )




  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值