python实现冒泡排序

《Python数据结构与算法分析》(第二版)

# !/user/bin/env python
# coding:utf-8

# 冒泡排序,不论列表是否已有序,都进行len(alist)-1趟排序
def bubbleSort(alist):
    count = 0# 记录第几趟排序之后列表有序
    for passnum in range(len(alist)-1, 0, -1):# range([start, ], stop, [, step])start默认为0,step默认为1
        exchanges = False
        for i in range(passnum):
            if alist[i] > alist[i+1]:
                exchanges = True
                temp = alist[i+1]
                alist[i+1] = alist[i]
                alist[i] = temp
        if exchanges:
            count = count + 1
    return count


'''
# 改进排序算法,当上一趟排序没有发生交换时,说明列表已有序,可以终止排序
def shortBubbleSort(alist):
    exchanges = True
    passnum = len(alist) - 1
    while passnum > 0 and exchanges:
        exchanges = False
        for i in range(passnum):
            if alist[i] > alist[i+1]:
                exchanges = True
                temp = alist[i+1]
                alist[i+1] = alist[i]
                alist[i] = temp
        passnum = passnum - 1
    return len(alist)-1-(passnum+1)# 返回第几趟排序之后列表有序
'''

alist = [5, 1, 2, 3, 4, 6, 8]
print(alist)
print(bubbleSort(alist))
# print(shortBubbleSort(alist))
print(alist)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值