排序算法学习--冒泡排序@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





你可能感兴趣的:(排序算法)