1. 程式人生 > >【4.1】算法遞歸 冒泡,選擇插入排序

【4.1】算法遞歸 冒泡,選擇插入排序

aps 利用 nts lap spa span for 有序 位置

遞歸

程序本身自己調用自己稱之為遞歸,類似於俄羅斯套娃,體現在代碼中:用戶執行最外(N)層函數,最外側調用N-1層函數,N-1層函數調用N-2層函數...

技術分享圖片

利用函數編寫如下數列:

斐波那契數列指的是這樣一個數列 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

技術分享圖片 Demo

冒泡排序

冒泡排序是排序中經典排序之一,它利用相鄰元素比較並進行位置的互換...

技術分享圖片

需求:請按照從小到大對列表 [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】算法遞歸 冒泡,選擇插入排序