• Python元组与字符串操作(10)——冒泡法


    冒泡法

    属于交换排序,元素两两比较大小,交换位置,结果可升序或降序排列

    nums = [2,5,1,6,7,9,8,3,4]
    for i in range(len(nums)):    ##计数器0~8
        flag = True    ##假定达到目标排序,可以提前结束
        for j in range(len(nums)-1-i):
            if nums[j] > nums[j+1]:
                nums[j],nums[j+1] = nums[j+1],nums[j]
                ##temp = nums[j]
                ##nums[j] = nums[j+1]
                ##nums[j+1] = temp
                flag = False    ##发生交换,继续下一轮排序
        if not flag:
            break
    print(nums)
    [1, 2, 3, 4, 5, 6, 7, 8, 9]

    冒泡法总结

    冒泡法需要数据一轮轮比较

    可以设定一个标记判断此轮是否有数据交换发生,如果没有发生交换,可以结束排序,如果发生交换,继续下一轮排序

    最差的排序情况是,初始顺序与目标顺序完全相反,遍历次数1,...,n-1之和n(n-1)/2

    最好的排序情况是,初始顺序与目标顺序完全相同,遍历次数n-1

    时间复杂度O(n**2)

  • 相关阅读:
    SDOI2019游记
    noi.ac309 Mas的童年
    51nod1237 最大公约数之和
    loj6074 子序列
    noi.ac89A 电梯
    51nod97B 异或约束和
    bzoj4490 随机数生成器Ⅱ加强版
    CF55D Beautiful numbers
    CF24D Broken robot
    CF226D The table
  • 原文地址:https://www.cnblogs.com/omgasw/p/11660421.html
Copyright © 2020-2023  润新知