• 冒泡排序的优化


    知识点:判断是否有序;判断有序无序的边界
    最初的版本

    def bubble_sort_v1(array=[]):
        for i in range(len(array)-1):
            for j in range(len(array)-i-1):
                if array[j] > array[j+1]:
                    temp = array[j]
                    array[j] = array[j+1]
                    array[j+1] = temp
    

    判断出数列已经有序,并作出标记,达到已经有序的数列不用进行排序

    def bubble_sort_v2(array=[]):
        for i in range(len(array)-1):
            # 有序标记,每一轮的初始是true
            is_sorted = True
            for j in range(len(array)-i-1):
                if array[j] > array[j+1]: # 不执行该if语句时is_sorted = True才会被调用;
                    # 那没有后面没排序好,或者刚好索引值就不大于它了,他就进入下一个for
                    temp = array[j]
                    array[j] = array[j+1]
                    array[j+1] = temp
                    # 有元素交换,所以不是有序,标记变为false
                    is_sorted = False
            if is_sorted:
                break
    

    判断数列有序区域,若数列中较后面的全部元素都是有序的,那么就不需要进行2元素之间的比较了

    def bubble_sort_v3(array=[]): #加了个有序无序的分界线,使每个元素之间的遍历次数减少
        # 记录最后一次交换的位置
        last_exchange_index = 0
        # 无序数列的边界,每次比较只需要比到这里为止
        sort_border = len(array)-1
        for i in range(len(array)-1):
            # 有序标记,每一轮的初始是true
            is_sorted = True
            for j in range(sort_border): # 每个元素之间序遍历的次数
                if array[j] > array[j+1]:
                    temp = array[j]
                    array[j] = array[j+1]
                    array[j+1] = temp
                    # 有元素交换,所以不是有序,标记变为false
                    is_sorted = False
                    # 把无序数列的边界更新为最后一次交换元素的位置
                    last_exchange_index = j
            sort_border = last_exchange_index
            if is_sorted:
                break
    
    
    my_array = list([3, 4, 14, 1, 5, 6, 7, 8, 1, -1, 0, 9, 11])
    bubble_sort_v3(my_array)
    print(my_array)
    
    努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。
  • 相关阅读:
    HTML编辑器(1)
    HTML轮播(2)
    HTML轮播(1)
    MVC联想查询绑定下拉框
    Flex布局
    css垂直水平居中问题
    rem,em,px的区别
    css中的定位、清除浮动
    css3的盒模型
    HTML的语义化
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15338816.html
Copyright © 2020-2023  润新知