【4.1】算法遞歸 冒泡,選擇插入排序
阿新 • • 發佈:2018-01-20
aps 利用 nts lap spa span for 有序 位置
第一步
第二步
第三步
遞歸
程序本身自己調用自己稱之為遞歸,類似於俄羅斯套娃,體現在代碼中:用戶執行最外(N)層函數,最外側調用N-1層函數,N-1層函數調用N-2層函數...
利用函數編寫如下數列:
Demo斐波那契數列指的是這樣一個數列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368
冒泡排序
冒泡排序是排序中經典排序之一,它利用相鄰元素比較並進行位置的互換...
需求:請按照從小到大對列表 [13, 22, 6, 99, 11] 進行排序
思路:相鄰兩個值進行比較,將較大的值放在右側,依次比較!
選擇排序
選擇排序,顧名思義先 創建一個特殊的變量:
- 選擇第一個值的索引賦值給特殊變量,然後循環其他索引並進行值的比較,如果特殊變量對應的值 > 循環的值,那麽將當前值的索引放入變量中,繼續向後比較
- 選擇第二個值的索引賦值給特殊變量,...
- ...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
def select_sort(args):
"""
選擇排序
:param args: 要進行排序的列表
:return: 排序之後的列表 """
for j in range ( 0 , len (args) - 1 ):
min_val_index = j
for i in range (j + 1 , len (args)):
if args[i] < args[min_val_index]:
min_val_index = i
temp = args[min_val_index]
args[min_val_index] = args[j]
args[j] = temp
return args
lis = [ 10 , 77 , 12 , 43 , 88 , 1 , 8 , 8 , 2 , 3 , 6 ]
result = select_sort(lis)
print (result)
|
插入排序
插入排序有兩個特點:
- 從前向後兩兩比較
- 永遠保證左邊是有序的
其實插入排序就是維護一個有序的序列,並且有一個人在不停的拋出新的值,然後有序的序列開始去檢測新值,將其添加到有序序列中的合法位置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
def insert_sort(args):
"""
插入排序
:param args: 要排序的列表
:return: 排序成功後的列表
"""
for i in range ( 1 , len (args)):
for j in range (i - 1 , - 1 , - 1 ):
if args[j] > args[j + 1 ]:
temp = args[j]
args[j] = args[j + 1 ]
args[j + 1 ] = temp
else :
break
return args
|
【4.1】算法遞歸 冒泡,選擇插入排序