Python利用遞迴函式和列表推導式實現快速排序

2022-07-22 08:15:14 字數 1458 閱讀 3808

python**:

"""

基礎知識:遞迴函式(函式在內部呼叫自身,這個函式就是遞迴函式)

計算1-n的整數之和

sum = n + (n-1) + (n-1-1) + ... + 1

"""def

fact(n):

if n==1:

return 1

return n + fact(n - 1)

n = 10s = fact(10)

print("

\r\n1-%s的整數之和是:%s

" %(n,s))

"""基礎知識:列表推導式(通過for迴圈判斷是否符合條件的方式從a列表中推導出b列表)

取出m以下的偶數

例如11以下偶數有:0,2,4,6,8,10

"""m = 11arr = [x for x in range(0, m) if x%2 ==0]

print("

\r\n%s以下偶數有:%s

" %(m,arr))

"""利用遞迴函式和列表推導式實現快速排序

快速排序的處理邏輯:

1、選擇1個數為基準(例如第1個數)

2、將待排序的數與逐個基準比較,分割成小於等於基準和大於基準的兩部分

每部分重複以上1、2步驟

本例中:

1、以第1個數4為基準

2、得到第1部分,小於等於4的陣列[1,2,4,0]

3、得到第2部分,大於4的陣列[6,9,8,7,5]

4、分別對兩部分陣列遞迴

注意:第1部分+基準+第2部分 是每次排序後的結果

"""def

quicksort(lst):

if len(lst) <= 1:

return

lst

#以第乙個數

left = [l for l in lst[1:] if l<=lst[0]]

right = [r for r in lst[1:] if r>lst[0]]

return quicksort(left) + lst[0:1] +quicksort(right)

lists = [4, 6, 9, 1, 8, 7, 2, 5, 4, 0]

print("

\r\n排序前: %s\r\n

" %lists)

print("

排序後: %s

" % quicksort(lists))

輸出結果:

e:\python\algorithm>python3 quicksort.py

1-10的整數之和是:5511以下偶數有:[0, 2, 4, 6, 8, 10]

排序前: [4, 6, 9, 1, 8, 7, 2, 5, 4, 0]

排序後: [0, 1, 2, 4, 4, 5, 6, 7, 8, 9]

*****結束*****

python 遞迴(附利用棧和佇列模擬遞迴)

凡是迴圈能幹的事,遞迴都能幹12 34方法 1 寫出臨界條件 2 找這一次和上一次的關係 3 假設當前函式已經能用,呼叫自身計算上一次的結果再求出本次的結果 下面我們通過兩段 簡單看一下遞迴和非遞迴的區別 輸入乙個大於等於1的數,求1到n的和!1 普通函式方法 2 3 def hanshu n 4 ...

python遞迴函式和匿名函式

乙個函式的內部可以呼叫其他函式。但是,如果乙個函式在內部不呼叫其他函式,而是自己本身的話,這個函式就是遞迴函式。例 def fn num if num 1 result 1else result fn num 1 num return result n int input 請輸入乙個正整數 prin...

python匿名函式和遞迴函式

匿名函式格式 lambda 引數 運算 例子 hello lambda a,b a b 匿名函式一半結合內建函式使用 max list,func func匿名函式比如 列表裡面元素是字典 就是可以 list,lambda x x 鍵 min 和max幾乎一樣 map func iterables 對...