python:插入排序(直接插入)的实现

系统 1593 0

插入排序是一种简单直观且稳定的排序算法。

将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。

基本思想:
每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的列表中适当位置上,直到全部插入完为止。

将排序的数组分成两部分:第一部分已排好序的元素,第二部分包含即待插入元素。在排序过程中,分别从待插入元素中取出元素,插入到已排好序的元素列表中。

分类:
直接插入排序,二分插入排序(又称折半插入排序)
二分插入排序在后面的文章会写到。

直接插入排序

实例,将用户输入的列表按照从小到大排列

思路:

<1> 将列表分为两部分,一部分为已排序好的元素,另一部分为待排序的元素。(若此列表无已排好的元素,直接将第一个元素视为已拍好的部分);

<2> 对待排序的部分进行遍历,从第一个开始往已排好的部分进行插入;

<3> 假设待排序的元素坐标为 i ,则已排好序的最后一位坐标为 j = i-1;

<4> 将 i 与 j 坐标所对应的元素大小进行比较,若待排元素 i 小,则将此时的待排元素储存为临时变量,将已排好的元素 j 向后移动一位;

<5> 继续向已排好序列前方进行寻找比较。此过程中,比临时变量大的元素均向后移一位,直到找到比临时变量小或者到达列表顶端为止。

<6> 将刚才的临时变量赋值到合适的位置。

代码实现:

            
              
                def
              
              
                Sorting
              
              
                (
              
              self
              
                )
              
              
                :
              
              
    len_list 
              
                =
              
              
                len
              
              
                (
              
              new_list
              
                )
              
              
                for
              
               i 
              
                in
              
              
                range
              
              
                (
              
              
                0
              
              
                ,
              
               len_list
              
                -
              
              
                1
              
              
                )
              
              
                :
              
              
        j 
              
                =
              
               i
              
                -
              
              
                1
              
              
                if
              
               new_list
              
                [
              
              i
              
                ]
              
              
                <
              
               new_list
              
                [
              
              j
              
                ]
              
              
                :
              
              
            temp 
              
                =
              
               new_list
              
                [
              
              i
              
                ]
              
              
            new_list
              
                [
              
              i
              
                ]
              
              
                =
              
               new_list
              
                [
              
              j
              
                ]
              
              
            j 
              
                -=
              
              
                1
              
              
                while
              
               j 
              
                >
              
              
                0
              
              
                and
              
               new_list
              
                [
              
              j
              
                ]
              
              
                >
              
               temp
              
                :
              
              
                new_list
              
                [
              
              j
              
                +
              
              
                1
              
              
                ]
              
              
                =
              
               new_list
              
                [
              
              j
              
                ]
              
              
                j 
              
                -=
              
              
                1
              
              
            new_list
              
                [
              
              j
              
                +
              
              
                1
              
              
                ]
              
              
                =
              
               temp            

new_list 
              
                =
              
              
                list
              
              
                (
              
              
                input
              
              
                (
              
              
                'please input new numbers:'
              
              
                )
              
              
                )
              
              
Sorting
              
                (
              
              new_list
              
                )
              
            
          

python:插入排序(直接插入)的实现_第1张图片
具体的流程可以参考上图


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论