Python实现排序算法
一.冒泡排序---O(n^2)
def bubbleSort(alist): for passnum in range(len(alist) - 1,0,-1): for i in range(passnum): if alist[i] > alist[i+1]: temp = alist[i] alist[i] = alist[i+1] alist[i+1] = temp alist = [1,3,5,2,4,6,8,7] bubbleSort(alist) print(alist)
短冒泡排序(效率更高):
def shortBubbleSort(alist):
exchanges = True
passnum = len(alist) - 1
while passnum > 0 and exchanges:
exchanges = False
print('ww')
for i in range(passnum):
if alist[i] > alist[i+1]:
print(alist[i])
print('xx')
exchanges = True
temp = alist[i]
alist[i] = alist[i+1]
alist[i+1] = temp
passnum = passnum - 1
alist = [9,2,4,3,5,1,8,7]
shortBubbleSort(alist)
print(alist)
二.选择排序---O(n^2)
交换次数少于冒泡排序,选择排序比冒泡排序效率略高
def selectionSort(alist): for fillslot in range(len(alist)-1,0,-1): positionOfMax = 0 for location in range(1,fillslot+1): if alist[location] > alist[positionOfMax]: positionOfMax = location temp = alist[fillslot] alist[fillslot] = alist[positionOfMax] alist[positionOfMax] = temp alist = [54,26,93,17,77,31,44,55,20] selectionSort(alist) print(alist)
三.插入排序---O(n^2)
def insertionSort(alist): for index in range(1,len(alist)): currentvalue = alist[index] position = index while position > 0 and alist[position-1] > currentvalue: alist[position] = alist[position-1] position = position - 1 alist[position] = currentvalue alist = [12,23,11,25,14,93,59] insertionSort(alist) print(alist)

浙公网安备 33010602011771号