日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《算法图解》第四章笔记与课后练习_快速排序算法

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《算法图解》第四章笔记与课后练习_快速排序算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

軟件環境:Python?3.7.0b4

一、分而治之

工作原理:

  • 找出簡單的基線條件;
  • 確定如何縮小問題的規模,使其符合基線條件。

# 4.2 def count(list):if list == []:return 0return 1 + count(list[1:])# 4.3 def max(list):if len(list) == 2:return list[0] if list[0] > list[1] else list[1]sub_max = max(list[1:])return list[0] if list[0] > sub_max else sub_max

?

4.4:二分查找的基線條件是數組只包含一個元素。如果要查找的值與這個元素相同,就找到了!否則說明它不在數組中。遞歸條件為 把數組分成兩半,將其中一半丟棄,并對另一半執行二分查找。

?

二、快速排序

def quicksort(array):if len(array) < 2:# 基線條件:為空或只包含一個元素的數組是“有序”的return arrayelse:# 遞歸條件pivot = array[0]# 由所有小于等于基準值的元素組成的子數組less = [i for i in array[1:] if i <= pivot]# 由所有大于基準值的元素組成的子數組greater = [i for i in array[1:] if i > pivot]return quicksort(less) + [pivot] + quicksort(greater)print(quicksort([10, 5, 2, 3])) # 需排序的數組

?

?

三、小結

  • 分治法是將問題逐步分解。使用分治法處理列表時,基線條件很可能是空數組或只包含一個元素的數組。
  • 實現快速排序時,請隨機地選擇用作基準值的元素。快速排序的平均運行時間為O(nlog n)。

?

總結

以上是生活随笔為你收集整理的《算法图解》第四章笔记与课后练习_快速排序算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。