国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用Python實現插入排序和選擇排序

shiina / 1100人閱讀

摘要:具體實現步驟為首先我們把整個數組拆分為有序區間和未排序區間,有序區間在插入排序一開始只有一個元素,就是數組的第一個元素。


這篇是我關于用Python實現50個經典算法代碼的第一篇文章,主要目的是在自己手寫一遍算法之后,在文章中對算法的細節進行總結來加以鞏固。

話不多說,讓我們從最基本的排序算法開始吧

插入排序

如下圖所示,插入排序的實現思路顧名思義,就是不斷地在一個已經是有序的數組中,尋找合適位置并插入新元素

具體實現步驟為:

首先我們把整個數組拆分為有序區間和未排序區間,有序區間在插入排序一開始只有一個元素,就是數組的第一個元素。

接在有序區間之后的一個元素就是準備插入的元素,在圖中就是標為綠色的元素,在有序區間內尋找位置并插入。

其尋找邏輯為:從后往前依次進行比較,如果待插入元素大于當前元素,則將待插入元素插入到當前元素的后一位,如果待插入元素小于當前元素,則將當前元素后移一位。不斷重復該過程直至到數組的最后一位

其實現的具體代碼為:

def insertion_sort(a):
    length = len(a)
    if length <=1:
        return 
    for i in range(1,length):
        j = i-1
        value = a[i]
        while j >=0:
            if a[j]

時間復雜計算為:我們需要將整個數組遍歷一遍,所以這一部分為O(n),在每一次遍歷中都要執行一次插入操作,其時間復雜度為O(n),所以總時間復雜度為O(n2)

選擇排序

選擇排序跟插入排序算法類似,都是將數組分為有序區間和未排序區間,區別在于插入排序是將一個新元素插入到有序區間內,而選擇排序則是在未排序區間中找到最小元素,并交換到有序區間之后。

實現代碼為:

def selection_sort(a):
    length = len(a)
    if length <=1:
        return
    for i in range(0,length-1):
        min_value = a[i]
        min_index = i
        j = i+1
        while j

時間復雜度計算:數組長度為n,一共需要尋找n次最小值,每次尋找最小值都要遍歷未排序區間一次,其時間復雜度為O(n),乘以n次為O(n2)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43779.html

相關文章

  • 【算法日積月累】1-選擇排序

    摘要:選擇排序算法實現實現選擇排序,記錄最小元素的索引,最后才交換位置說明交換兩個數組中的元素,在中有更簡單的寫法,這是的語法糖,其它語言中是沒有的。和語言中比較器的實現前面我們說到了,我們為了突出排序算法的思想,將所有的例子僅限在數組排序中。 showImg(https://segmentfault.com/img/remote/1460000017909538?w=1949&h=1080...

    neuSnail 評論0 收藏0
  • Github標星2w+,熱榜第一,如何Python實現所有算法

    摘要:歸并排序歸并排序,或,是創建在歸并操作上的一種有效的排序算法,效率為大符號。以此類推,直到所有元素均排序完畢。與快速排序一樣都由托尼霍爾提出的,因而也被稱為霍爾選擇算法。 showImg(https://segmentfault.com/img/remote/1460000019096360);編譯:周素云、蔣寶尚 學會了Python基礎知識,想進階一下,那就來點算法吧!畢竟編程語言只...

    zxhaaa 評論0 收藏0
  • 基本排序算法的Python實現

    摘要:本篇主要實現九八大排序算法,分別是冒泡排序,插入排序,選擇排序,希爾排序,歸并排序,快速排序,堆排序計數排序。希爾排序是非穩定排序算法。歸并排序算法依賴歸并操作。但是,計數排序可以用在基數排序算法中,能夠更有效的排序數據范圍很大的數組。 本篇主要實現九(八)大排序算法,分別是冒泡排序,插入排序,選擇排序,希爾排序,歸并排序,快速排序,堆排序,計數排序。希望大家回顧知識的時候也能從我的這...

    zhangqh 評論0 收藏0
  • python-八大算法

    摘要:排序算法總結排序算法平均時間復雜度冒泡排序選擇排序插入排序希爾排序快速排序歸并排序堆排序基數排序一冒泡排序基本思想兩個數比較大小,較大的數下沉,較小的數冒起來。 排序算法總結 排序算法 平均時間復雜度 冒泡排序O(n2) 選擇排序O(n2) 插入排序O(n2) 希爾排序O(n1.5) 快速排序O(N*logN) 歸并排序O(N*logN) 堆排序O(N*logN) 基數排序O(d(n+...

    aboutU 評論0 收藏0
  • 前端面試必備——十大經典排序算法

    摘要:冒泡排序冒泡排序也是一種簡單直觀的排序算法。但希爾排序是非穩定排序算法。快速排序又是一種分而治之思想在排序算法上的典型應用。本質上來看,快速排序應該算是在冒泡排序基礎上的遞歸分治法。 冒泡排序 冒泡排序(Bubble Sort)也是一種簡單直觀的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就...

    RebeccaZhong 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<