排序:非遞歸的快排

目錄

?非遞歸的快排:

代碼分析:?

代碼演示:


?非遞歸的快排:

眾所周知,遞歸變成非遞歸,而如果還想具有遞歸的功能,那么遞歸的那部分則需要變成循環來實現。

而再我們的排序中,我們可以采取棧的方式,用入棧、出棧、棧是否為空來完成遞歸的部分。?

如圖所示,這是序列分割時的圖片,我們可以將一段序列的最左端下標和最右端下標丟入棧內,隨后賦予臨時變量之后出棧,然后利用臨時變量組成的區間將序列進行一次的快排

快排結束返回key值,再根據key值繼續劃分序列,并且再度傳入序列的最左端和最右端下標入棧隨后立馬賦予臨時變量然后出棧,這樣用入棧和出棧來控制循環。

代碼分析:?

這串代碼的本質是利用了棧的后進先出的原理,以及二叉樹后序遍歷的原理。

當一個元素入棧后立馬出棧,只要序列不是只剩下一個元素,那么它會帶入兩個元素入棧。

而這入棧,同時也是一種遍歷,如下代碼所示,通過計算我們得知最開始是數組的前端后入棧,但是是先出棧,出棧后他會帶著四個元素入棧,而后端的兩個下標則是被壓倒了棧底,直到前端不能再入棧了后端才會出棧并且帶四個元素入棧。?

代碼演示:


?

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

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

相關文章

深入理解asyncio:異步編程的基礎用法

引言: 隨著計算機硬件的不斷發展,對于異步編程的需求也越來越強烈。Python中的asyncio模塊為開發者提供了一種強大而靈活的異步編程方式。本文將介紹asyncio的基礎用法,包括async/await/run語句的使用、多個協程的并發執行、以及在協程中進行…

Let和Var的區別

一:區別 Let不能重復聲明,且必須先聲明再調用; 但也可以只聲明不賦值,默認賦值undefined; 二:實例 let x 10; let x 20; // 這里將會報錯,因為 x 已經被聲明過了 console.log(y); let b …

Azure Machine Learning - 使用 Azure OpenAI 服務生成圖像

在瀏覽器/Python中使用 Azure OpenAI 生成圖像,圖像生成 API 根據文本提示創建圖像。 關注TechLead,分享AI全維度知識。作者擁有10年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員&#x…

【動態規劃】【廣度優先】LeetCode2258:逃離火災

作者推薦 本文涉及的基礎知識點 二分查找算法合集 動態規劃 二分查找 題目 給你一個下標從 0 開始大小為 m x n 的二維整數數組 grid ,它表示一個網格圖。每個格子為下面 3 個值之一: 0 表示草地。 1 表示著火的格子。 2 表示一座墻,你跟…

pytorch:YOLOV1的pytorch實現

pytorch:YOLOV1的pytorch實現 注:本篇僅為學習記錄、學習筆記,請謹慎參考,如果有錯誤請評論指出。 參考: 動手學習深度學習pytorch版——從零開始實現YOLOv1 目標檢測模型YOLO-V1損失函數詳解 3.1 YOLO系列理論合集(Y…

Redis對象類型檢測與命令多態

一. 命令類型 Redis中操作鍵的命令可以分為兩類。 一種命令可以對任意類型的鍵執行,比如說DEL,EXPIRE,RENAME,TYPE,OBJECT命令等。 舉個例子: #字符串鍵 127.0.0.1:6379> set msg "hello world&…

第76講:MySQL數據庫中常用的命令行工具的基本使用

文章目錄 1.mysql客戶端命令工具2.mysqladmin管理數據庫的客戶端工具3.mysqlbinlog查看數據庫中的二進制日志4.mysqlshow統計數據庫中的信息5.mysqldump數據庫備份工具6.mysqllimport還原備份的數據7.source命令還原SQL類型的備份文件 MySQL數據庫提供了很多的命令行工具&#…

python 畫條形圖(柱狀圖)

目錄 前言 基礎介紹 月度開支的條形圖 前言 條形圖(bar chart),也稱為柱狀圖,是一種以長方形的長度為變量的統計圖表,長方形的長度與它所對應的變量數值呈一定比例。 當使用 Python 畫條形圖時,通常會使…

python代碼:如何控制一個exe程序只能執行一次

import ctypes import sys def is_program_running(): # 創建互斥體 mutex_name "Global\\MonitorClientMutex" h_mutex ctypes.windll.kernel32.CreateMutexW(None, False, mutex_name) # 檢查互斥體是否已經存在 if ctypes.windll.kernel32.Get…

Centos7.9安裝谷歌【解決依賴問題】

安裝過程 mkdir /home/app cd /home/app wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpmyum install -y redhat-lsb-core-4.0-7.el6.centos.x86_64 yum install -y libX11-devel --nogpg yum install -y cmake gcc gcc-c gtk-devel gim…

vscode 編譯運行c++ 記錄

一、打開文件夾,新建或打開一個cpp文件 二、ctrl shift p 進入 c/c配置 進行 IntelliSense 配置。主要是選擇編譯器、 c標準, 設置頭文件路徑等,配置好后會生成 c_cpp_properties.json; 二、編譯運行: 1、選中ma…

zabbix 通過 odbc 監控 mssql

1、環境 操作系統:龍蜥os 8.0 zabbix:6.0 mssql:2012 2、安裝odbc 注意:需要在zabbix server 或者 zabbix proxy 安裝 odbc驅動程序 dnf -y install unixODBC unixODBC-devel3、安裝mssql驅動程序 注意:我最開始嘗試…

Tomcat管理功能使用

前言 Tomcat管理功能用于對Tomcat自身以及部署在Tomcat上的應用進行管理的web應用。在默認情況下是處于禁用狀態的。如果需要開啟這個功能,需要配置管理用戶,即配置tomcat-users.xml文件。 !!!注意:測試功…

react 學習筆記 李立超老師 | (學習中~)

文章目錄 react學習筆記01入門概述React 基礎案例HelloWorld三個API介紹 JSXJSX 解構數組 創建react項目(手動)創建React項目(自動) | create-react-app事件處理React中的CSS樣式內聯樣式 | 內聯樣式中使用state (不建議使用)外部樣式表 | CSS Module React組件函數式組件和類組…

【數據結構和算法】反轉字符串中的單詞

其他系列文章導航 Java基礎合集數據結構與算法合集 設計模式合集 多線程合集 分布式合集 ES合集 文章目錄 其他系列文章導航 文章目錄 前言 一、題目描述 二、題解 2.1 方法一:雙指針 2.2 方法二:分割 倒序 三、代碼 3.1 方法一:雙…

不同品牌的手機如何投屏到蘋果MacBook?例如小米、華為怎樣投屏比較好?

習慣使用apple全家桶的人當然知道蘋果手機或iPad可以直接用airplay投屏到MacBook。 但工作和生活的多個場合里,并不是所有人都喜歡用同一品牌的設備,如果同事或同學其他品牌的手機需要投屏到MacBook,有什么方法可以快捷實現? 首先…

1 億個數據取出最大前 100 個有什么方法?

1 億個數據取出最大前 100 個有什么方法? 大家好,這是一道經常在面試中被遇到的一個問題,我之前面試也是被問到過得,現在一起學習下,下次再被問到就可以輕松地用對。 在計算機科學和數據處理領域,我們經常…

【GDB】

GDB 1. GDB調試器1.1 前言1.2 GDB編譯程序1.3 啟動GDB1.4 載入被調試程序1.5 查看源碼1.6 運行程序1.7 斷點設置1.7.1 通過行號設置斷點1.7.2 通過函數名設置斷點1.7.3 通過條件設置斷點1.7.4 查看斷點信息1.7.5 刪除斷點 1.8 單步調試1.9 2. GDB調試core文件2.1 設定core文件的…

(五)五種最新算法(SWO、COA、LSO、GRO、LO)求解無人機路徑規劃MATLAB

一、五種算法(SWO、COA、LSO、GRO、LO)簡介 1、蜘蛛蜂優化算法SWO 蜘蛛蜂優化算法(Spider wasp optimizer,SWO)由Mohamed Abdel-Basset等人于2023年提出,該算法模型雌性蜘蛛蜂的狩獵、筑巢和交配行為&…

iOS(swiftui)——系統懸浮窗( 可在其他應用上顯示,可實時更新內容)

因為ios系統對權限的限制是比較嚴格的,ios系統本身是不支持全局懸浮窗(可在其他app上顯示)。在iphone14及之后的iPhone機型中提供了一個叫 靈動島的功能,可以在手機上方可以添加一個懸浮窗顯示內容并實時更新,但這個功能有很多局限性 如:需要iPhone14及之后的機型且系統…