python快速排序代碼_Python實現快速排序算法

原標題:Python實現快速排序算法

Python實現快速排序算法

快速排序算法是一種基于交換的高效的排序算法,由C.R.A.Hoare于1962年提出,是一種劃分交換排序。它采用了一種分治的策略,通常稱其為分治法(Divide and conquer algorithm)。

分治法的基本思想

將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞歸地解這些子問題,然后將這些子問題的解組合為原問題的解。

快速排序的基本思想

先找到一個基準點(一般指數組的中部),然后數組被該基準點分為兩部分,依次與該基準點數據比較,如果比它小,放左邊;反之,放右邊。

左右分別用一個空數組去存儲比較后的數據。

最后遞歸執行上述操作,直到數組長度 <= 1;

動畫圖

代碼實現

def quick_sort(lists, left, right):

'''快速排序'''

# 跳出遞歸判斷

if left >= right:

return lists

# 選擇參考點,該調整范圍的第1個值

key = lists[left]

low = left

high = right

# 循環判斷直到遍歷全部

while left < right:

# 從右邊開始查找大于參考點的值

while left < right and lists[right] >= key:

right -= 1

lists[left] = lists[right] # 這個位置的值先挪到左邊

# 從左邊開始查找小于參考點的值

while left < right and lists[left] <= key:

left += 1

lists[right] = lists[left] # 這個位置的值挪到右邊

# 寫回改成的值

lists[left] = key

# 遞歸,并返回結果

quick_sort(lists, low, left - 1) # 遞歸左邊部分

quick_sort(lists, left + 1, high) # 遞歸右邊部分

return lists

numbers = [4, 0, 7, 9, 2, 8, 1, 3, 6, 5]

quick_sort(numbers,0,len(numbers)-1)

assert numbers == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]返回搜狐,查看更多

責任編輯:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534964.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534964.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534964.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

docker mysql 生產環境_如何部署Docker MySQL生產環境?

1 前言Docker容器原則上是短暫的&#xff0c;如果容器被刪除或損毀&#xff0c;數據或配置將丟失&#xff0c;所以上個章節部署的MySQL只適合于測試環境&#xff0c;由于生產的需求&#xff0c;本章將使用Docker卷機制持久保存Docker容器中創建的數據。2 最佳實踐2.1 環境配置2…

kali 切換root權限_Ubuntu 被曝嚴重漏洞:切換系統語言 + 輸入幾行命令,就能獲取 root 權限...

公眾號關注 “GitHubDaily”設為 “星標”&#xff0c;帶你了解技術圈內新鮮事&#xff01;來自量子位無需系統密碼&#xff0c;就能添加新的 sudo 用戶、獲取 root 權限&#xff0c;事后還能刪除不留痕跡。這是 GitHub 安全研究員 Kevin Backhouse 發現的一個 Ubuntu 系統大漏…

oracle定義變量sql賦值_ORACLE獲取SQL綁定變量值的方法總結

本文總結一下ORACLE數據庫中如何獲取SQL綁定變量值的方法&#xff0c;在SQL優化調優過程中&#xff0c;經常會用到這方面的知識點。在此梳理、總結一下這方面的知識點&#xff0c;方面日后查找、翻閱。方法1&#xff1a;查詢V$SQLV$SQL視圖中的BIND_DATA字段用來存儲綁定變量的…

transition css_Transition 過渡

1&#xff1a;基本概念在一定時間內平滑的過渡&#xff0c;也就是圓滑的以動畫效果改變css的屬性值。它的過渡可以由鼠標點擊、焦點獲取或者失去、被點擊事件或對元素的改變中觸發&#xff1b;不能主動觸發&#xff0c;只能被動觸發。常用的基本屬性有&#xff1a;Transition-d…

jdbc mysql分頁_JDBC【數據庫連接池、DbUtils框架、分頁】

1.數據庫連接池什么是數據庫連接池簡單來說&#xff1a;數據庫連接池就是提供連接的。。。為什么我們要使用數據庫連接池數據庫的連接的建立和關閉是非常消耗資源的頻繁地打開、關閉連接造成系統性能低下編寫連接池編寫連接池需實現java.sql.DataSource接口創建批量的Connectio…

python讀寫文件操作_詳解Python文件讀寫操作

讀文件 打開文件&#xff08;文件需要存在&#xff09;#打開文件 f open("data.txt","r") #設置文件對象 print(f)#文件句柄 f.close() #關閉文件 #為了方便&#xff0c;避免忘記close掉這個文件對象&#xff0c;可以用下面這種方式替代 with open(data.t…

keyloadtool_phoenix 利用CsvBulkLoadTool 批量帶入數據并自動創建索引

需要先創建表&#xff1a;CREATE TABLE IF NOT EXISTS population (state CHAR(2) NOT NULL, city VARCHAR NOT NULL, population BIGINTCONSTRAINT my_pk PRIMARY KEY (state, city));在phoenix 目錄下執行hadoop jar /home/phoenix-4.6.0-HBase-1.0-bin/phoenix-4.6.0-HBase-…

【cloud Alibaba】(三)流量控制、熔斷降級(下)——Sentinel

各位小伙伴們大家好&#xff0c;歡迎來到這個小扎扎的spring cloud專欄&#xff0c;在這個系列專欄中我對B站尚硅谷陽哥的spring cloud教程進行一個總結&#xff0c;鑒于 看到就是學到、學到就是賺到 精神&#xff0c;這波依然是血賺 ┗|&#xff40;O′|┛ &#x1f4a1;Sen…

python gui入門的例子_Python GUI編程之Tkinter入門之道

相信剛學習使用Python進行GUI編程的時候&#xff0c;肯定都會聽過Tkinter&#xff0c;畢竟是standard Python interface to the Tk GUI toolkit.用來寫一些小程序還是很方便的。但如果是剛接觸GUI編程的話肯定是被官方文檔搞的有些懵&#xff0c;畢竟還沒弄清楚套路。之前使用過…

@async 默認線程池_SpringBoot 線程池的使用

Java大聯盟幫助萬千Java學習者持續成長關注作者&#xff5c;Musclehengblog.csdn.net/Muscleheng/article/details/81409672前言最近在做訂單模塊&#xff0c;用戶購買服務類產品之后&#xff0c;需要進行預約&#xff0c;預約成功之后分別給商家和用戶發送提醒短信。考慮發短信…

mysql 橫向擴展 中間件_mysql-proxy數據庫中間件架構 | 架構師之路

一、mysql-proxy簡介mysql-proxy是mysql官方提供的mysql中間件服務&#xff0c;上游可接入若干個mysql-client&#xff0c;后端可連接若干個mysql-server。它使用mysql協議&#xff0c;任何使用mysql-client的上游無需修改任何代碼&#xff0c;即可遷移至mysql-proxy上。mysql-…

python selenium對象怎么序列化_python selenium爬取斗魚

不加延遲報錯selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {“method”:”xpath”,”selector”:”.//span[class”DyListCover-hot”]”}(Session info: chrome80.0.3987.122)最開始以為是版本問題&#xff0c;不…

神經網絡的全連接層_深度神經網絡全連接層

一、概念全連接層一般在網絡的最后部分做分類輸出&#xff0c;全連接層的有m個輸入和n個輸出&#xff0c;每一個輸出都和所有的輸入相連&#xff0c;相連的權重w都是不一樣的&#xff0c;同時每一個輸出還有一個bias。二、前向全連接假設輸入是4&#xff0c;輸出是4&#xff0c…

vs 選定內容沒有屬性頁_從智能單品,到全屋智能:2019中國智能家居發展白皮書【附82頁PPT】...

2019年&#xff0c;智能家居行業在技術、市場和行業的變革中迎接新的挑戰和機遇。一方面&#xff0c;AI、IoT、邊緣計算全面賦能智能家居&#xff1b;另一方面&#xff0c;中國的房地產行業正在從上半場的“增量開發”&#xff0c;切換到下半場的“存量經營”、“樓盤精裝化”政…

python決策樹的應用_機器學習-決策樹實戰應用

1.下載2.安裝&#xff1a;雙擊3.創建桌面快捷方式安裝目錄\bin文件夾\&#xff1a;找到gvedit.exe文件右鍵 發送到桌面快捷方式&#xff0c;如下圖&#xff1a;4.配置環境變量將graphviz安裝目錄下的bin文件夾添加到Path環境變量中&#xff1a;5.驗證是否安裝并配置成功進入win…

【SSM面向CRUD編程專欄 3】關于黑馬程序員最全SSM框架教程視頻,P37集老師跳過的模塊創建以及tomcat下載安裝配置和運行等諸多問題

寫在前面&#xff1a;? 本人是在學習B站黑馬程序員SSM框架教程視頻的時候在P37集遇到了問題&#xff0c;如果不解決還沒辦法往下接著聽&#xff0c;老師跳過的模塊創建以及tomcat下載安裝配置和運行等諸多問題&#xff0c;全在這篇博客中得到了解決 &#x1f622;解決上…

python人臉識別源碼_Python 抖音機器人,讓你找到漂亮小姐姐

本項目作者沉迷于抖音無法自拔&#xff0c;常常花好幾個小時在抖音漂亮小姐姐身上。本著高效、直接地找到漂亮小姐姐的核心思想&#xff0c;我用 Python ADB 做了一個 Python 抖音機器人 Douyin-Bot。特性自動翻頁顏值檢測人臉識別自動點贊自動關注隨機防 Ban自動評論原理打開…

thinkphp josn mysql_ThinkPHP:JSON字段類型的使用(ORM)

ThinkPHP5.1版本正式發布已經有一段時間了&#xff0c;我會陸續給大家介紹其中的新特性。今天要給大家介紹的是一個可能很多用戶還不了解的一個特性&#xff1a;JSON字段數據支持。不過首先注意一點&#xff0c;本篇內容中描述的JSON字段數據的支持是從V5.1.4版本引入的。由于包…

獲取http地址如何從上面抓取圖片_用 Python 自動抓取妹子圖

目錄前言Media Pipeline啟用Media Pipeline使用 ImgPipeline抓取妹子圖瞎比比與送書后話前言我們在抓取數據的過程中&#xff0c;除了要抓取文本數據之外&#xff0c;當然也會有抓取圖片的需求。那我們的 scrapy 能爬取圖片嗎&#xff1f;答案是&#xff0c;當然的。說來慚愧&a…