冒泡排序

基本冒泡排序

'''
冒泡排序
比较列表相邻的两个元素,前面>后面,交换位置,一趟比较后,无序列表个数减1,有序列表个数+1
复杂度 O(N^2)
'''

import random

def bubble_sort(list):
    for i in range(len(list) - 1):
        for j in range(len(list) - i - 1):
            if list[j] > list[j + 1]:
                list[j], list[j + 1] = list[j + 1], list[j]

优化版冒泡排序

'''
对于冒泡排序有一个地方可以优化,当一趟元素没有进行交换位置:表明当前片段是有序列表
'''
def bubble_sort_plus(list):
    for i in range(len(list) - 1):
        ifOk = True #定义每一趟都要验证
        for j in range(len(list) - i - 1):
            if list[j] > list[j + 1]:
                list[j], list[j + 1] = list[j + 1], list[j]
                ifOk = False #交换位置表示需要进行交换位置了
        if ifOk:#没交换位置表示已经是有序了
            return

验证

nums = [random.randint(0, 5000) for i in range(1000)]
print(nums)
#bubble_sort(nums)
bubble_sort_plus(nums)
print(nums)

 

posted @ 2023-05-22 21:20  晓枫的春天  阅读(9)  评论(0编辑  收藏  举报