最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)快速排序的方法詳解

 更新時(shí)間:2019年10月25日 11:40:26   作者:鯨落丶  
這篇文章主要介紹了Python實(shí)現(xiàn)快速排序的方法,結(jié)合實(shí)例形式詳細(xì)分析了快速排序的思路、原理及Python具體實(shí)現(xiàn)技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python實(shí)現(xiàn)快速排序的方法。分享給大家供大家參考,具體如下:

說(shuō)起快排的Python實(shí)現(xiàn),首先談一下,快速排序的思路:

1、取一個(gè)參考值放到列表中間,初次排序后,讓左側(cè)的值都比他小,右側(cè)的值,都比他大。

2、分別對(duì)左側(cè)和右側(cè)的部分遞歸第1步的操作

實(shí)現(xiàn)思路:

  • 兩個(gè)指針left,right分別指向列表的第一個(gè)元素和最后一個(gè)元素,然后取一個(gè)參考值,默認(rèn)為第一個(gè)列表的第一個(gè)元素list[0],稱(chēng)為K
  • 然后left指向的值先和參考值K進(jìn)行比較,若list[left]小于或等于K值,left就一直向右移動(dòng),left+1,直到移動(dòng)到大于K值的地方,停住
  • right指向的值和參考值K進(jìn)行比較,若list[right]大于K值,right就一直向左移動(dòng),right-1,直到移動(dòng)到小于K值的地方,停住
  • 此時(shí),left和right若還沒(méi)有相遇,即left還小于right,則二者指向的值互換
  • 若已經(jīng)相遇則說(shuō)明,第一次排序已經(jīng)完成,將list[right]與list[0]的值進(jìn)行互換,進(jìn)行之后的遞歸

編程實(shí)現(xiàn):

#快排的主函數(shù),傳入?yún)?shù)為一個(gè)列表,左右兩端的下標(biāo)
def QuickSort(list,low,high):
  if high > low:
    #傳入?yún)?shù),通過(guò)Partitions函數(shù),獲取k下標(biāo)值
    k = Partitions(list,low,high)
    #遞歸排序列表k下標(biāo)左側(cè)的列表
    QuickSort(list,low,k-1)
    # 遞歸排序列表k下標(biāo)右側(cè)的列表
    QuickSort(list,k+1,high)
def Partitions(list,low,high):
  left = low
  right = high
  #將最左側(cè)的值賦值給參考值k
  k = list[low]
  #當(dāng)left下標(biāo),小于right下標(biāo)的情況下,此時(shí)判斷二者移動(dòng)是否相交,若未相交,則一直循環(huán)
  while left < right :
    #當(dāng)left對(duì)應(yīng)的值小于k參考值,就一直向右移動(dòng)
    while list[left] <= k:
      left += 1
    # 當(dāng)right對(duì)應(yīng)的值大于k參考值,就一直向左移動(dòng)
    while list[right] > k:
      right = right - 1
    #若移動(dòng)完,二者仍未相遇則交換下標(biāo)對(duì)應(yīng)的值
    if left < right:
      list[left],list[right] = list[right],list[left]
  #若移動(dòng)完,已經(jīng)相遇,則交換right對(duì)應(yīng)的值和參考值
  list[low] = list[right]
  list[right] = k
  #返回k值
  return right
list_demo = [6,1,2,7,9,3,4,5,10,8]
print(list_demo)
QuickSort(list_demo,0,9)
print(list_demo)

運(yùn)行結(jié)果:

[6, 1, 2, 7, 9, 3, 4, 5, 10, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:

在線動(dòng)畫(huà)演示插入/選擇/冒泡/歸并/希爾/快速排序算法過(guò)程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python中accumulate函數(shù)的用法詳解

    Python中accumulate函數(shù)的用法詳解

    累積(accumulate)函數(shù)是Python標(biāo)準(zhǔn)庫(kù)itertools中的一個(gè)強(qiáng)大工具,用于對(duì)可迭代對(duì)象進(jìn)行累積操作,下面我們將深入探討accumulate函數(shù)的用法,感興趣的小伙伴可以了解下
    2023-11-11
  • Python中類(lèi)的初始化特殊方法

    Python中類(lèi)的初始化特殊方法

    本文給大家介紹一下Python中類(lèi)才初始化時(shí)候的特殊方法,通過(guò)實(shí)例給大家做了分析,一起來(lái)學(xué)習(xí)下。
    2017-12-12
  • Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例

    Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例

    今天小編就為大家分享一篇Python 讀取串口數(shù)據(jù),動(dòng)態(tài)繪圖的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python+unittest+requests+excel實(shí)現(xiàn)接口自動(dòng)化測(cè)試框架

    Python+unittest+requests+excel實(shí)現(xiàn)接口自動(dòng)化測(cè)試框架

    這篇文章主要介紹了Python+unittest+requests+excel實(shí)現(xiàn)接口自動(dòng)化測(cè)試框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python實(shí)現(xiàn)的多叉樹(shù)尋找最短路徑算法示例

    Python實(shí)現(xiàn)的多叉樹(shù)尋找最短路徑算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的多叉樹(shù)尋找最短路徑算法,結(jié)合實(shí)例形式分析了Python使用深度優(yōu)先查找獲取多叉樹(shù)最短路徑相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 8個(gè)實(shí)用的Python程序你知道幾個(gè)

    8個(gè)實(shí)用的Python程序你知道幾個(gè)

    這篇文章主要為大家詳細(xì)介紹了8個(gè)實(shí)用的Python程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助<BR>
    2022-02-02
  • 深入理解Python中的 __new__ 和 __init__及區(qū)別介紹

    深入理解Python中的 __new__ 和 __init__及區(qū)別介紹

    這篇文章主要介紹了深入理解Python中的 __new__ 和 __init__及區(qū)別介紹,這兩個(gè)方法的主要區(qū)別在于:__new__ 負(fù)責(zé)對(duì)象的創(chuàng)建而 __init__ 負(fù)責(zé)對(duì)象的初始化。具體內(nèi)容詳情大家跟隨小編一起看看吧
    2018-09-09
  • Python3第三方模塊之Pillow模塊的使用詳解

    Python3第三方模塊之Pillow模塊的使用詳解

    這篇文章主要介紹了Python3第三方模塊之Pillow模塊的使用詳解,在 pillow之前處理圖形的庫(kù)莫過(guò)于PIL,但是它支持到python2.7,年久失修,于是一群志愿者在PIL的基礎(chǔ)上常見(jiàn)了pillow,支持python3,又豐富和功能特性,需要的朋友可以參考下
    2023-10-10
  • python檢測(cè)服務(wù)器端口代碼實(shí)例

    python檢測(cè)服務(wù)器端口代碼實(shí)例

    這篇文章主要介紹了python檢測(cè)服務(wù)器端口代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 解決Django一個(gè)表單對(duì)應(yīng)多個(gè)按鈕的問(wèn)題

    解決Django一個(gè)表單對(duì)應(yīng)多個(gè)按鈕的問(wèn)題

    今天小編就為大家分享一篇解決Django一個(gè)表單對(duì)應(yīng)多個(gè)按鈕的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07

最新評(píng)論

吉安县| 长白| 闵行区| 富平县| 石嘴山市| 岳西县| 南川市| 威海市| 耒阳市| 宁南县| 桂东县| 土默特左旗| 分宜县| 乐昌市| 盘山县| 拉孜县| 永胜县| 余江县| 定边县| 阳山县| 牡丹江市| 乌拉特前旗| 安吉县| 西藏| 南阳市| 固安县| 迭部县| 灵山县| 秦皇岛市| 肃北| 安溪县| 龙山县| 新营市| 姜堰市| 河池市| 吉隆县| 阿拉善盟| 陇西县| 长沙县| 河间市| 鄄城县|