日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文來用圖文的方式詳細講解了Python十大經典排序算法 —— 插入排序、選擇排序、快速排序、冒泡排序、歸并排序、希爾排序、插入排序、桶排序、基數排序、計數排序算法,想要學習的你們,繼續閱讀下去吧,如果覺得不錯的話,推薦給身邊的朋友吧。

插入排序

思路

  1. 從第一個元素開始,該元素可以認為已經被排序;
  2. 取出下一個元素,在已經排序的元素序列中從后向前掃描;
  3. 如果該元素(已排序)大于新元素,將該元素移到下一位置;
  4. 重復步驟3,直到找到已排序的元素小于或者等于新元素的位置;
  5. 將新元素插入到該位置;
  6. 重復步驟2~5。

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(n^2)

希爾排序

前言

希爾排序是插排的升級,先將待排序的元素進行分組,在分組的基礎上進行插排,從而降低整體上的時間復雜度。

這里面設計到一個增量的概念,我們依據增量來決定分組的跨度。常用的增量有三種:

  • 希爾增量 [1,2,4,8,…,2^(k-1)]
  • 海巴德增量 [1,3,7,15,…,2^k-1]
  • 塞基維克增量 [1,5,19,41,…,4k-3*2k+1]

一般情況下希爾增量帶來的時間復雜度小于O(n2),但在極壞情況下可能效果不明顯甚至超過這個值。海巴德增量可以將時間復雜控制在O(n(3/2))以下,而塞基維克增量該項參數為O(n^(4/3))。

思路

  1. 擇定增量
  2. 分組
  3. 組內比較
  4. 重復步驟2,3直到跨度為1

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

選擇排序

思路

  1. 選出數組中最大(最?。┑脑胤诺介_頭
  2. 在剩下的元素中選中最大(最?。┰胤诺缴蟼€被選元素之后
  3. 重復2步驟

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(n^2)

堆排序

前言

堆排序,顧名思義,就是基于堆。因此先來介紹一下堆的概念。

堆分為最大堆和最小堆,其實就是完全二叉樹。最大堆要求節點的元素都要大于其孩子,最小堆要求節點元素都小于其左右孩子,兩者對左右孩子的大小關系不做任何要求,其實很好理解。有了上面的定義,我們可以得知,處于最大堆的根節點的元素一定是這個堆中的最大值。其實我們的堆排序算法就是抓住了堆的這一特點,每次都取堆頂的元素,將其放在序列最后面,然后將剩余的元素重新調整為最大堆,依次類推,最終得到排序的序列。

思路

  1. 把堆頂的最大數取出
  2. 將剩余的堆繼續調整為最大堆
  3. 重復步驟1,2

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 


用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(nlogn)

冒泡排序

思路

  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
  3. 針對所有的元素重復以上的步驟,除了最后一個。
  4. 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(n^2)

快速排序

思路

  1. 先從集合中取出一個數作為“哨兵”
  2. 將集合中比哨兵大的元素和比哨兵小的元素分列兩側
  3. 再對左右區間重復第二步,直到各區間只有一個數

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(nlogn)

歸并排序

思路

  1. 將列表拆分成兩個有序子模塊
  2. 遞歸拆分
  3. 子模塊內部進行排序并合并成大的模塊
  4. 遞歸合并

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(nlogn)

計數排序

思路

  1. 找出集合中最小數m和最大數n
  2. 建一個長為(m-n+1)的列表count_list,所有元素初始化為0
  3. 遍歷集合,元素減去n得到的結果作為index,將count_list該位上的元素加1。
  4. 初始化空列表result。
  5. 將count_list序列化,用索引值減去n,得到的結果追加到result中,索引值對應的位元素值減1,直到它為0。
  6. 重復步驟5。

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(n)

桶排序

前言

桶排序是將待排序集合中處于同一個值域的元素存入同一個桶中,也就是根據元素值特性將集合拆分為多個區域,則拆分后形成的多個桶,從值域上看是處于有序狀態的。對每個桶中元素進行排序,則所有桶中元素構成的集合是已排序的。

思路

  1. 根據待排序集合中最大元素和最小元素的差值范圍和映射規則,確定申請的桶個數;
  2. 遍歷待排序集合,將每一個元素移動到對應的桶中;
  3. 對每一個桶中元素進行排序,并移動到已排序集合中。

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(n^2)

基數排序

思路

  1. 首先根據個位數的數值,在走訪數值時將它們分配至編號0到9的桶中;
  2. 接下來將這些桶中的數值重新串接起來,成為以下的數列。接著再進行一次分配,這次是根據十位數來分配;
  3. 接下來將這些桶中的數值重新串接起來,持續進行以上的動作直至最高位數為止。

圖示

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

代碼

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

平均時間復雜度

O(d*2*n), 這里的d是數值位數

本文來自熱心好友原味吐司的投稿,點贊!

更多有關python、深度學習和計算機編程的精彩內容,可以關注微信公眾號:哆啦A夢愛學習

用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 


用Python實現十大經典排序算法-插入、選擇、快速、冒泡、歸并等

 

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定