def qs(arr):
if len(arr) <= 1: return arr
return qs([i for i in arr[1:] if i < arr[0]]) + arr[0:1] + qs([i for i in arr[1:] if i >= arr[0]])
list0 = [1,2,5,3,7,9,33,2,25,99,0,-2,-66]
print(qs(list0))
1,判断列表长度,如果只有1个元素或者是空列表,直接原样返回
2,取列表的第一个元素为参照物,遍历列表的其余每一个元素,比参照物小的放在参照物左边,大的放右边,递归操作,最后返回。
注意中间的参照物arr[0:1]
,不能写成arr[0]
。因为arr[0]
是int
类型,arr[0:1]
是列表,可以参与列表运算。
选择排序:
L = [1,1,4,3,6,5,7,8,3,2,9,0]
def select_sort(L, asc=True):
for i in range(len(L)-1):
for j in range(i+1, len(L)):
if L[i] >= L[j]:
L[i], L[j] = L[j], L[i]
if asc:
return L
else:
L.reverse()
return L
a = select_sort(L)
冒泡排序:
def bubble_sort(L, asc=True):
for i in range(len(L)-1):
for j in range(len(L)-1-i):
if L[j] >= L[j+1]:
L[j],L[j+1] = L[j+1],L[j]
if asc:
return L
else:
L.reverse()
return L
a = bubble_sort(L)
print(a)