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)

  

 

posted @ 2018-01-31 19:47  薛定谔病态猫  阅读(261)  评论(0)    收藏  举报