1 冒泡排序
从第一个数开始和相邻的数逐个比大小,如果比相邻的数大(升序),则调换位置,然后第二个数依次类推。
def Bubble(array): for j in range(len(array)-1): for i in range(len(array)-j-1): if array[i]>array[i+1]: array[i],array[i+1] = array[i+1],array[i] return array print(Bubble([5,4,3,2,1]))
2 选择排序
每次把选择的第一个数和后面的数做对比,记下最小数的编号,把它放在最前面的位置。
def Select(array): smallest = 0 for j in range(len(array)): for i in range(j,len(array)): if array[i] < array[smallest]: #当前值 比之前选出来的最小值 还要小,那就把它换成最小值 smallest = i else: # print("smallest num is ",array[smallest]) array[j],array[smallest] = array[smallest],array[j] return array
a = [ 9,1,22,31,45,3,6,2,11 ] print(Select(a))
3 插入排序
从第二个数依次开始和左边的数做比较,把他们插到合适的位置。
def Insert(array): for index in range(1,len(array)): value = array[index] i = index-1 while i>=0: if value<array[i]: array[i],array[i+1] = value,array[i] i -= 1 return array print(Insert([5,4,3,2,1]))
4 希尔排序
希尔排序的实质就是分组插入排序,插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率,但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。
def
5 快速排序
通过把列表分成两部分,通过交换位置,使右边的数据始终比左边的数大,然后采用二分思想不断重复,最终完成排序。
def Quick(array,i,j): if i>=j: return 3 low = i high = j k = array[low] while low<high: while low<high and array[high]>k: high -= 1 array[low] = array[high] array[high] = k while low<high and array[low]<=k: low += 1 array[high] = array[low] array[low] = k Quick(array,i,low-1) Quick(array,low+1,j) a = [5,1,3,6,7,9] Quick(a,0,5) print(a)