递归实现快速排序

2018-10-11  本文已影响10人  米酒真香
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)
上一篇 下一篇

猜你喜欢

热点阅读