8行代碼實現快速排序,簡單易懂圖解!

快速排序是一種常用的排序算法,比選擇排序快的多。在之前的我隨筆中也寫過關于快速排序的算法,也可以看一下和現在的區別python實現快速排序 - Mr-Yang` - 博客園 (cnblogs.com)。

成都創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于做網站、成都網站制作、將樂網絡推廣、微信小程序開發、將樂網絡營銷、將樂企業策劃、將樂品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創新互聯為所有大學生創業者提供將樂建站搭建服務,24小時服務熱線:028-86922220,官方網址:m.kartarina.com

在看快速排序之前,要先了解一下遞歸,對于遞歸我之前的文章中也有提到python遞歸函數 - Mr-Yang` - 博客園 (cnblogs.com),在這里我補充一個關于遞歸的一個點:基線條件和遞歸條件

一、基線條件和遞歸條件

由于遞歸函數是自己調用自己,因此編寫這樣的函數時容易出錯,從而導致無限循環。示例如下:

def countdown(i):
    print(i)
    countdown(i-1)

如果運行上述代碼,就會發現一個問題:這個函數運行起來是不會停止,直到到達遞歸的最大深度。

正是因為這樣,編寫遞歸函數的時候,必須告訴它何時停止遞歸,所以每個遞歸函數都有兩個部分:基線條件(base case)和遞歸條件(recursive case)。遞歸條件指定的是函數調用自己,而基線條件則指的是不再調用自己,從而避免循環。例如給 countdown 添加基線條件。

def countdown(i):
    print(i)
   	if i <= 1:	#<----------基線條件
        return
    else:	#<--------------遞歸條件
        countdown(i-1)

這樣就按照預期那樣執行,不會無限循環下去如圖所示

二、快速排序

因為對于排序來說,最簡單的就是一個空列表,或者只包含一個元素的列表,所以可以將基線條件設置為空或只包含一個元素,在這種情況下,只需要返回原列表。

def quicksort(alist):
    if len(alist) < 2:
        return alist

思路如下圖所示:

代碼如下:

def quicksort(alist):
    if len(alist) < 2:
        return alist	# 基線條件為空或只包含一個元素的列表是有序的。
    else:
        pivot = alist[0]	# 選擇基準值
        less = [i for i in alist[1:] if i <= pivot]	# 由小于基準值的元素組成
        biggish = [i for i in alist[1:] if i > pivot]	# 由大于基準值的元素組成
        return quicksort(less) + [pivot] + quicksort(biggish)

作者:Mr-Yang

出處:https://www.cnblogs.com/XiaoYang-sir/p/.html

版權:本作品采用「署名-非商業性使用-相同方式共享 4.0 國際」許可協議進行許可。

分享題目:8行代碼實現快速排序,簡單易懂圖解!
網站URL:http://m.kartarina.com/article36/dsoggpg.html

成都網站建設公司_創新互聯,為您提供品牌網站建設全網營銷推廣標簽優化網站制作、面包屑導航、商城網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

微信小程序開發
主站蜘蛛池模板: 精品亚洲A∨无码一区二区三区| 波多野结衣VA无码中文字幕电影| 免费A级毛片无码A∨免费| 无码国模国产在线观看免费| 无码人妻丰满熟妇区毛片| 亚洲av无码一区二区三区四区 | 无码国内精品久久人妻麻豆按摩 | 久久人妻少妇嫩草AV无码蜜桃| 免费无码又黄又爽又刺激| 无码视频在线播放一二三区| 亚洲一区AV无码少妇电影☆| 国产AV无码专区亚洲AVJULIA| 蜜桃无码AV一区二区| 精品韩国亚洲av无码不卡区| 中国少妇无码专区| 日韩免费无码一区二区三区| 中文字幕无码不卡免费视频| 亚洲精品无码你懂的网站| 日日麻批免费40分钟无码| 无码国产精品一区二区免费式影视 | 少妇伦子伦精品无码STYLES| 无码VA在线观看| 亚洲中文字幕无码爆乳AV| 97精品人妻系列无码人妻| 日韩无码系列综合区| 亚洲色av性色在线观无码| 亚洲高清无码综合性爱视频| 无码精品人妻一区二区三区漫画 | 永久免费AV无码网站国产| 亚洲国产日产无码精品| 精品无码久久久久久久动漫 | 中国无码人妻丰满熟妇啪啪软件| 久久AV高潮AV无码AV| 成年无码av片完整版| 无码国产精品一区二区免费I6| 久久亚洲精品无码| 久久无码AV中文出轨人妻| 国产爆乳无码视频在线观看3| 日韩丰满少妇无码内射| 亚洲Av永久无码精品三区在线| 国产av无码久久精品|