原理性内容可参见:
https://blog.csdn.net/weixin_41571493/article/details/81875088
1. 冒泡排序
相邻两个值比较,每趟确定一个最值放在数据尾部
重复n-1趟,每趟比较n-i-1次(i为趟数)
时间复杂度O(n^2)
def BubbleSort(arr):
n=len(arr)
if n<=1:return arr
for i in range(n-1):
for j in range(n-i-1):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
return arr
2. 快速排序
挑选一个基准(哨兵),比基准大的值放在基准后面,比基准小的值放在基准前面。类似于二分法。
时间复杂度为O(nlogn)
def QuickSort(arr,l,r):
i,j=l,r
if l>=r:return arr
while i<j:
while i<j and arr[j]>=arr[l]:j-=1
while i<j and arr[i]<=arr[l]:i+=1
arr[i],arr[j]=arr[j],arr[i]
arr[l],arr[i]