欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)插入排序和選擇排序的方法

 更新時間:2019年05月12日 14:54:16   作者:zhuanglog  
這篇文章主要介紹了Python實現(xiàn)插入排序和選擇排序的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

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

插入排序

如下圖所示,插入排序的實現(xiàn)思路顧名思義,就是 不斷地在一個已經(jīng)是有序的數(shù)組中,尋找合適位置并插入新元素 。

具體實現(xiàn)步驟為:

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

接在有序區(qū)間之后的一個元素就是準(zhǔn)備插入的元素,在圖中就是標(biāo)為綠色的元素,在有序區(qū)間內(nèi)尋找位置并插入。

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

其實現(xiàn)的具體代碼為:

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]<value:
    a[j+1] = value
    break
   else:
    a[j+1] = a[j]
    if j == 0:
     a[j] = value 
   j -=1
  print(a)

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

選擇排序

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

實現(xiàn)代碼為:

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<length:
   if a[j] < min_value:
    min_value = a[j]
    min_index = j
   j += 1
  a[i],a[min_index] = a[min_index],a[i]

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

相關(guān)文章

  • python歐拉角和旋轉(zhuǎn)矩陣變換的實現(xiàn)示例

    python歐拉角和旋轉(zhuǎn)矩陣變換的實現(xiàn)示例

    在計算機圖形學(xué)中,歐拉角和旋轉(zhuǎn)矩陣是描述物體旋轉(zhuǎn)的常用方法,本文主要介紹了python歐拉角和旋轉(zhuǎn)矩陣變換的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 用python打印1~20的整數(shù)實例講解

    用python打印1~20的整數(shù)實例講解

    在本篇內(nèi)容中小編給大家分享了關(guān)于python打印1~20的整數(shù)的具體步驟以及實例方法,需要的朋友們參考下。
    2019-07-07
  • Python arrow模塊使用方法

    Python arrow模塊使用方法

    Arrow 是用于處理日期和時間的 Python 模塊。 與內(nèi)置的日期和時間工具相比,它使創(chuàng)建,操作,格式化和轉(zhuǎn)換日期,時間和時間戳變得更加容易
    2022-10-10
  • python 實現(xiàn)分組求和與分組累加求和代碼

    python 實現(xiàn)分組求和與分組累加求和代碼

    這篇文章主要介紹了python 實現(xiàn)分組求和與分組累加求和代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python編寫淘寶秒殺腳本

    Python編寫淘寶秒殺腳本

    最近想搶冰墩墩的手辦和鑰匙圈,但是同志們搶的速度太快了,只能利用Python編寫一個淘寶秒殺腳本了,文中示例代碼講解詳細(xì),需要的可以參考一下
    2022-02-02
  • python操作字典類型的常用方法(推薦)

    python操作字典類型的常用方法(推薦)

    下面小編就為大家?guī)硪黄猵ython操作字典類型的常用方法(推薦)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-05-05
  • 你需要掌握的20個Python常用技巧

    你需要掌握的20個Python常用技巧

    Python的可讀性和簡單性是其廣受歡迎的兩大原因,本文介紹20個常用的Python技巧來提高代碼的可讀性,并能幫助你節(jié)省大量時間,需要的可以參考一下
    2022-02-02
  • Python?Asyncio中Coroutines,Tasks,Future可等待對象的關(guān)系及作用

    Python?Asyncio中Coroutines,Tasks,Future可等待對象的關(guān)系及作用

    這篇文章主要介紹了Python?Asyncio中Coroutines,Tasks,Future可等待對象的關(guān)系及作用,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-06-06
  • Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)

    Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)

    這篇文章主要介紹了Pytorch如何加載自己的數(shù)據(jù)集(使用DataLoader讀取Dataset)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python中的Broadcast機制

    Python中的Broadcast機制

    這篇文章主要介紹了Python中的Broadcast機制,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論