学习排序算法,根据《大话数据结构》实现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