• 排序--插入


    插入排序:对一个无序的列表进行排序,通过插入排序算法思想
    基本思想:要对输入的无序列表进行排序,列表从左至右增大,假设第一个元素是已经
    排好了的元素,那么第二个元素就与第一个元素比较,如果大,则不需要移动,如果小了,
    则需要先把第一个元素往后移一位,然后再把第二个元素给第一个元素赋值。
    举个例子来说明:初始列表:4,8,2,5,1
    变量i是当前需要插入的数值,0——j区间是已经排好序的列表下标,因为最右边是最大的,所以j是递减的
    对这样的列表排序,假设第一个元素已经排好了,所以遍历的时候从第二个元素开始。
    1步:i=1,j=0,8与4比较,因为8大,所以把8值赋给j+1的位置
    2步:i=2,j=1,2与8比较,因为2小,所以需要把8赋给j=2的位置,也就是说把列表中2位置的值修改为8,
    j=0,2与4比较,因为2小,所以需要把4赋值给j=1的位置,也就是原来列表中8的值修改为4,j=-1,不满足循环条件,退出
    执行到list[j+1] = temp这句代码,temp=2,j=-1,因此列表的第一个位置的值为2,即完成了2,4,8的排列
    3步:依次类推

    主要核心思想就是,插入的数依次与已完成排序列表中最右端的数比较大小,如果小了,列表中的数往右移一位,
    接着需要插入的数继续与最右减1的数比较大小,依次遍历完成。

    python代码:
    def insertSort(list):
        for i in range(1,len(list)):
            temp = list[i]
            j = i - 1
            #值小才需要移动
            while j >=0 and temp < list[j]:
                list[j + 1] = list[j]
                j -= 1
            list[j+1] = temp
    
        return list
    
    def main():
        listData = list(map(int,input("请输入需要排序的列表,逗号间隔:").split(",")))
        sortedList =  insertSort(listData)
        print("排序后的列表为:",end = "")
        print(sortedList)
    
    if (__name__ == "__main__"):
        main()
     
  • 相关阅读:
    Event事件的兼容性
    学会使用Google代码搜索
    event.srcElement怎么取得tr的title值及怎么利用样式编辑blogs
    Mac下MyEclipse配置Tomcat的方法
    Mac 下配置Tomcat7
    myEclipse导入现成项目出现错误
    Android——padding/margin/layout_alignParentRight详解
    Mac系统下Eclipse安装前端开发各类插件
    MyEclipse导入现成项目后报Target runtime Apache Tomcat v6.0 is not defined. 错误的解决办法
    Mac下配置PHP+MySql环境
  • 原文地址:https://www.cnblogs.com/an-wl/p/12566405.html
Copyright © 2020-2023  润新知