冒泡排序
def bubble_sort(L):
length = len(L)
for i in range(0, length):
for j in range(i + 1, length):
if L[i] > L[j]:
L[i], L[j] = L[j], L[i]
return L
arr = [1,53,2,1,9,0]
print(bubble_sort(arr))
快速排序
# 左小右大函数,获取一个中值,左放小右放大函数
def partition(arr, low, high): #参数:列表,列表的第一个索引0,最后一个索引值N
"""
【左小右大函数】
实现结果:提取列表中的最后一个元素为被比较值,≤该元素的值放在左边,>该元素的值放在右边
实现过程:≤最后一个元素的所有元素依次放在左边索引0~i的位置,然后将最后一个元素放在索引i的位置,实现结果
arr: 列表
low: arr的第一个索引:0
high: arr的最后一个索引:high
return: i,即被比较值所在的索引位置
"""
i = low # 最小元素索引
pivot = arr[high] # 最后一个元素,我们把列表中的所有元素同它比较
for j in range(low, high): #从第一个索引到倒数第二个索引
if arr[j] <= pivot: #从第一个元素到倒数第二个元素依次判断是否≤最后一个元素
arr[i], arr[j] = arr[j], arr[i] #≤最后一个元素的所有元素依次放在左边索引0~i的位置
i = i + 1
arr[i], arr[high] = arr[high], arr[i] #然后将最后一个元素放在索引i的位置,实现:该元素左边的都比它小,右边的都比它大的排序
return (i) #返回该元素的索引位置
# 快速排序函数
def quickSort(arr, low, high):
if low < high: #如果列表有1个以上的元素
pi = partition(arr, low, high) #获取左小右大函数中的 被比较数所在的索引
quickSort(arr, low, pi - 1) #反复循环,左排序
quickSort(arr, pi + 1, high) #反复循环,右排序
arr = [10,22,78,3,12,9,1,11,33,2]
low = 0
high = len(arr)-1
quickSort(arr, low, high)
print(arr)