zoukankan      html  css  js  c++  java
  • 排序算法(3)——插入排序

    __author__ = 'steven'
    # coding=utf-8
    '''插入排序(Insertion Sort)
    
        它的工作原理是通过构建有序序列,对于未排序数据,
        在已排序序列中从后向前扫描,找到相应位置并插入。
    
        步骤:
            1.从第一个元素开始,该元素可以认为已经被排序
            2.取出下一个元素,在已经排序的元素序列中从后向前扫描
            3.如果该元素(已排序)大于新元素,将该元素移到下一位置
            4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置,并做插入到该位置后
            5.重复步骤2~4
    
        平均时间复杂度为 O(n^2),该算法稳定.
        注:对于基本有序的数组,使用直接插入排序的效率是很高的.
    '''
    
    
    list = [5, 8, 1, 4, 2, 7, 3, 6]
    # list_ascended = [1, 2, 3, 4]
    # list_descended = [5, 4, 3, 2]
    
    def insert_sort(list):
        n = len(list)
        for i in range(1, n):
            print(list)
            for j in range(i, 0, -1):  #  以i为起点,0为终点,向前遍历
                if list[j] < list[j - 1]:
                    list[j], list[j - 1] = list[j - 1], list[j]
                else:
                    break
        return list
    
    print(insert_sort(list))
    # print('-----')
    # print(insert_sort(list_ascended))
    # print('-----')
    # print(insert_sort(list_descended))
    
    
    
  • 相关阅读:
    JAVA面试题
    Io流
    初识线程池
    理解事务的4种隔离级别
    简单认识Git与GitHub
    JAVA自动装箱和拆箱
    代码块以及他们的执行顺序
    反射机制
    java Excel表格
    访问修饰符的含义分析
  • 原文地址:https://www.cnblogs.com/stevenlk/p/6502479.html
Copyright © 2011-2022 走看看