• 排序--插入


    插入排序:对一个无序的列表进行排序,通过插入排序算法思想
    基本思想:要对输入的无序列表进行排序,列表从左至右增大,假设第一个元素是已经
    排好了的元素,那么第二个元素就与第一个元素比较,如果大,则不需要移动,如果小了,
    则需要先把第一个元素往后移一位,然后再把第二个元素给第一个元素赋值。
    举个例子来说明:初始列表: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()
     
  • 相关阅读:
    Linux中怎么通过PID号找到对应的进程名及所在目录
    MYSQL 1093 之You can't specify target table for update in FROM clause解决办法
    Spring注解@Resource和@Autowired区别对比
    Java数据类型和MySql数据类型对应一览
    java高分局之jstat命令使用(转)
    为python安装matplotlib模块
    Python中的文件IO操作(读写文件、追加文件)
    Python 3语法小记(九) 异常 Exception
    SpringBoot下的Job定时任务
    linux的top命令参数详解
  • 原文地址:https://www.cnblogs.com/an-wl/p/12566405.html
Copyright © 2020-2023  润新知