python冒泡算法

冒泡算法:比较两个相邻的元素,将值大的元素交换到右边。

更快速的单向冒泡算法:

def Bubble(lists):
    """
    原始版
    冒泡算法,两两之间进行交换比较大的往后移动
    :param lists: 输入待排序数组
    :return: 返回排序好的数组
    """
    for i in range(len(lists) - 1):
        for j in range(len(lists) - 1 - i):
            if lists[j] > lists[j + 1]:#比较交换
                lists[j], lists[j + 1] = lists[j + 1], lists[j]
    return lists

def Bubble_My(lists):
    """
    自己优化版
    冒泡算法,两两之间进行交换比较大的往后移动
    :param lists: 输入待排序数组
    :return: 返回排序好的数组
    """
    for i in range(len(lists) - 1):
        flags = False
        tmp=len(lists) - 1 - i
        for j in range(tmp):
            if flags==True:
                if lists[j] >= lists[j + 1]:
                    lists[j], lists[j + 1] = lists[j + 1], lists[j]
            if lists[j]>=lists[tmp]:#最大数一步到位放置当前排序最后
                lists[j], lists[tmp] = lists[tmp], lists[j]
                flags=True
    return lists

def Bubble_sort2(items):
    """
    网络上的人家优化版2
    冒泡算法,两两之间进行交换比较大的往后移动
    :param lists: 输入待排序数组
    :return: 返回排序好的数组
    """
    for i in range(len(items) - 1):
        flag = False
        for j in range(len(items) - 1 - i):
            if items[j] > items[j + 1]:
                items[j], items[j + 1] = items[j + 1], items[j]
                flag = True
        if flag:
            flag = False
            for j in range(len(items) - 2 - i, 0, -1):
                if items[j - 1] > items[j]:
                    items[j], items[j - 1] = items[j - 1], items[j]
                    flag = True
        if not flag:
            break
    return items

def Bubble_sort1(list):
    """
    网络上的人家优化版1
    冒泡算法,两两之间进行交换比较大的往后移动
    :param lists: 输入待排序数组
    :return: 返回排序好的数组
    """
    x = len(list)
    for i in range(x - 1):
        isSorted = True
        for j in range(0, x - 1 - i):
            if list[j] > list[j + 1]:
                list[j], list[j + 1] = list[j + 1], list[j]
                isSorted = False
        if isSorted:
            break

    return list



import time
import random
lists=[i for i in range(1000)]
random.shuffle(lists)
tmp0=lists.copy()
tmp1=lists.copy()
tmp2=lists.copy()
tmp3=lists.copy()
tmp4=lists.copy()

start=time.time()
print(Bubble(tmp0))
end=time.time()
print("冒泡排序时间:",end-start)

start=time.time()
print(Bubble_sort1(tmp1))
end=time.time()
print("优化1排序时间:",end-start)

start=time.time()
print(Bubble_sort2(tmp2))
end=time.time()
print("优化2排序时间:",end-start)

start=time.time()
print(Bubble_My(tmp3))
end=time.time()
print("我的优化排序时间",end-start)

测试结果:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值