排序算法学习--冒泡排序@python

学习排序算法,根据《大话数据结构》实现python版本的排序算法。

import time
start =time.clock()
'''冒泡排序思想:通过不断的交换实现排序'''
#简单冒泡排序,前面排序对后面用处很小,所以 冒泡排序是非常低效率的
def simpleBubbleSort(datalist):
    n = len(datalist)
    for i in range(n):
        for j in range(i+1,n):
            if datalist[i] > datalist[j] : 
                datalist[i], datalist[j] = datalist[j], datalist[i]
    return datalist
# 正宗冒泡排序     
def bubbleSort(datalist):
    n = len(datalist)
    for i in range(n):
        for j in range(n-2,-1,-1):
            if datalist[j] > datalist[j+1] : 
                datalist[j], datalist[j+1] = datalist[j+1], datalist[j]
    return datalist
# 冒泡排序算法的优化
# 有时数组已经高度排序,不需要每一次循环都从头比较到尾
# 时间复杂度分析①最好的情况,有序,比较次数(n-1),O(n)。②最坏情况,逆序,比较次数1+2+...+...n-1,O(n*n)
def optiBubbleSort(datalist):
    n = len(datalist)
    flag = True
    for i in range(n):
        if flag :
            flag = False
            for j in range(n-2,-1,-1):
                if datalist[j] > datalist[j+1] : 
                    datalist[j], datalist[j+1] = datalist[j+1], datalist[j]
                    flag = True
    return datalist
datalist = [9,1,5,8,3,7,4,6,2]
sortedlist = optiBubbleSort(datalist)
end = time.clock()
executTime = end-start
print('Running time: %s Seconds'%(executTime))
# Running time: 2.886652696076908e-05 Seconds





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值