码迷,mamicode.com
首页 > 编程语言 > 详细

插入排序之python

时间:2018-06-01 00:22:26      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:insert   pytho   inf   算法   div   import   nbsp   有序   构建   

插入排序( Insert sort)

通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入;

由于不需要全部都比较完,所以排序速度优于冒泡和选择排序。

#插入排序就像是斗地主摸牌

1.算法描述:

  1. 从第一个元素开始,该元素可以认为已经被排序;
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描;
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置;
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
  5. 将新元素插入到该位置后;
  6. 重复步骤2~5。

技术分享图片

2.算法属性:

  • 算法时间复杂度:O(n^2)
  • 具稳定性

技术分享图片

3.代码实现

#kumata‘s code
#算法时间复杂度O(n^2)
#从小到大排

import time

def insert_sort(nums):
    start = time.time()
    
    #一张张摸牌,拿到手中
    for sort_inx in range(1,len(nums)):   #从1开始
        unsort_inx = sort_inx
        #当需要排序的index大于0且未排index前一个大于后一个时:
        while unsort_inx > 0 and nums[unsort_inx - 1] > nums[unsort_inx]:
            #前后交换
            nums[unsort_inx - 1], nums[unsort_inx] =  nums[unsort_inx], nums[unsort_inx - 1]  
            unsort_inx = unsort_inx - 1  #unsort下标更新
            
    t = time.time() - start
    return nums,t

lis = [1,2,5,8,4,3,6]
insert_sort(lis)

输出结果:
([1, 2, 3, 4, 5, 6, 8], 0.0)

 

插入排序之python

标签:insert   pytho   inf   算法   div   import   nbsp   有序   构建   

原文地址:https://www.cnblogs.com/kumata/p/9119606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!