【LeetCode Hot100 | 每日刷題】排序數組

912. 排序數組 - 力扣(LeetCode)

題目:

給你一個整數數組?nums,請你將該數組升序排列。

你必須在?不使用任何內置函數?的情況下解決問題,時間復雜度為?O(nlog(n)),并且空間復雜度盡可能小。

    示例 1:

    輸入:nums = [5,2,3,1]
    輸出:[1,2,3,5]
    

    示例 2:

    輸入:nums = [5,1,1,2,0,0]
    輸出:[0,0,1,1,2,5]

    方法:快速排序?

    快速排序核心就是分而治之,在當前排序區間[L,R]選定一個元素X作為中間值,X可以是nums[L+1],nums[R-1],nums[(L+R)/2],下面我們選擇nums[(L+R)/2]作為中間值,元素依次與X比較,小于X的元素在X左邊,大于X的元素在X右邊,并且再次遞歸排序左邊的區間以及X右邊的區間,直至整個數組完成排序。

    Java實現代碼:

    class Solution {public int[] sortArray(int[] nums) {int n=nums.length;quicksort(nums,0,n-1);return nums;}public void quicksort(int []nums,int l,int r){if(l==r)return;int x=nums[(l+r)/2];int i=l-1;int j=r+1;while(i<j){do i++;while(nums[i]<x);do j--;while(nums[j]>x);if(i<j){int tem=nums[i];nums[i]=nums[j];nums[j]=tem;}}quicksort(nums,l,j);quicksort(nums,j+1,r);}
    }

    平均時間復雜度:O(nlogn),最差時間復雜度為O(n^2),即每次取到的X都是當前區間的最大值或最小值,相當于冒泡排序了。

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

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

    相關文章

    Windows系統下使用Kafka和Zookeeper,Python運行kafka(二)

    1.配置 Zookeeper 進入解壓后的 Zookeeper 目錄&#xff08;例如 F:\zookeeper\conf&#xff09;&#xff0c;復制 zoo_sample.cfg 文件并命名為 zoo.cfg&#xff08;如果 zoo.cfg 已經存在&#xff0c;則直接編輯該文件&#xff09;。 打開 zoo.cfg 文件&#xff0c;配置相關…

    Web 自動化之 HTML JavaScript 詳解

    文章目錄 一、HTML 常用標簽二、javascript 腳本1、什么是 javascript(js)2、 js變量和函數3、js 彈窗處理4、js 流程控制語句和 switch 結構語句應用 一、HTML 常用標簽 HTML&#xff1a;超文本標記語言 超文本&#xff1a;不僅只包含文字&#xff0c;還有超鏈接、視頻…這些…

    el-date-picker的type為daterange時僅對開始日期做限制

    文章目錄 前言繡球html代碼一、正確代碼二、錯誤代碼 前言繡球 需求是這樣的&#xff0c;開始日期需要限制只能選擇今天的日期&#xff0c;結束日期只能選擇今天之后的日期。結束日期很常見&#xff0c;但是單純限制開始日期&#xff0c;還是蠻少見的&#xff0c;尤其是datera…

    觀測云:安全、可信賴的監控觀測云服務

    引言 近日&#xff0c;“TikTok 遭歐盟隱私監管機構調查并處以 5.3 億歐元”一案&#xff0c;再次引發行業內對數據合規等話題的熱議。據了解&#xff0c;僅 2023 年一年就產生了超過 20 億美元的 GDPR 罰單。這凸顯了在全球化背景下&#xff0c;企業在數據隱私保護方面所面臨…

    認識中間件-以及兩個簡單的示例

    認識中間件-以及兩個簡單的示例 什么是中間件一個響應處理中間件老朋友 nest g如何使用為某個module引入全局引入編寫邏輯一個日志中間件nest g mi 生成引入思考代碼進度什么是中間件 官方文檔 中間件是在路由處理程序之前調用的函數。中間件函數可以訪問請求和響應對象,以及…

    基于Flask、Bootstrap及深度學習的水庫智能監測分析平臺

    基于Flask、Bootstrap及深度學習的水庫智能監測分析平臺 項目介紹 本項目是基于Flask框架構建的水庫智能監測分析平臺&#xff0c;集水庫數據管理、實時監測預警、可視化分析和智能預測功能于一體。 預測水位的預警級別&#xff1a;藍色預警沒有超過正常水位且接近正常水位1米…

    springboot生成二維碼到海報模板上

    springboot生成二維碼到海報模板上 QRCodeController package com.ruoyi.web.controller.app;import com.google.zxing.WriterException; import com.ruoyi.app.domain.Opportunity; import com.ruoyi.app.tool.QRCodeGenerator; import com.ruoyi.common.core.page.TableDat…

    如何使用極狐GitLab 軟件包倉庫功能托管 maven?

    極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 軟件包庫中的 Maven 包 (BASIC ALL) 在項目的軟件包庫中發布 Maven 產物。然后&#xff0c;在需要將它們用作依賴項時安裝它…

    企業如何將釘釘付款單高效集成到金蝶云星空?

    釘釘數據集成到金蝶云星空&#xff1a;修改下推的付款單③ 在企業信息化系統中&#xff0c;數據的高效流轉和準確對接是實現業務流程自動化的關鍵。本文將分享一個實際案例&#xff0c;展示如何通過輕易云數據集成平臺&#xff0c;將釘釘中的付款單數據無縫集成到金蝶云星空系…

    python 實現文件批量重命名

    以下是使用Python實現文件批量重命名的示例代碼。該代碼可以將指定目錄下的文件按照一定規則進行重命名,這里以將文件重命名為帶有編號的文件名為例: import osdef batch_rename(directory):if not os.path.isdir(directory):print(

    Pandas學習筆記(四)

    DataFrame對象 文章目錄 DataFrame對象導入本文需要的包DataFrame與Series的相似之處使用read_csv函數導入DataFrameSeries和DataFrame的共享與專有屬性Series和DataFrame的共有方法 對DataFrame進行排序按照單列進行排序按照多列進行排序按照索引進行排序對列索引進行排序 設置…

    DA14585墨水屏學習(2)

    一、user_svc2_wr_ind_handler函數 void user_svc2_wr_ind_handler(ke_msg_id_t const msgid,struct custs1_val_write_ind const *param,ke_task_id_t const dest_id,ke_task_id_t const src_id) {// sprintf(buf2,"HEX %d :",param->length);arch_printf("…

    樹莓派5+Ubuntu24.04 LTS串口通信 保姆級教程

    【背景】 各位&#xff0c;除了樹莓派4B之外&#xff0c;我又搞了個樹莓派5, 裝的也是Ubuntu24.04 LTS服務器版。裝系統的方法跟樹莓派4B一樣&#xff0c;沒什么好說的。裝完了系統之后&#xff0c;我就想裝個wiringPi來試試串口&#xff0c;卻發現這個樹莓派5的串口和樹莓派4…

    【QT】UDP通訊本地調試

    qt已經寫好了udp通訊代碼&#xff0c;現在要進行測試。 1、終端輸入ipconfig查看本機網卡的ipv4地址 2、 用udpBind函數&#xff0c;綁定到此ip和自定義的端口號。 3、 打開網絡調試助手&#xff0c;自動檢測到本機的ip地址&#xff0c;輸入任意一個和程序里不一樣的端口號。 …

    在 Elasticsearch 中連接兩個索引

    作者&#xff1a;來自 Elastic Kofi Bartlett 解釋如何使用 terms query 和 enrich processor 來連接 Elasticsearch 中的兩個索引。 更多有關連接兩個索引的查詢&#xff0c;請參閱文章 “Elastic&#xff1a;開發者上手指南” 中的 “豐富數據及 lookup” 章節。 Elasticsea…

    LabVIEW的PID參數自適應控制

    在工業控制領域&#xff0c;PID 控制憑借結構簡單、穩定性好、工作可靠等優點被廣泛應用。然而&#xff0c;傳統固定參數的 PID 控制在面對復雜多變的工況時&#xff0c;控制效果往往難以達到最優。基于 LabVIEW 實現 PID 控制根據情況選擇參數&#xff08;即參數自適應調整&am…

    [redis進階四]分布式系統之哨兵(2)

    目錄 一 利用docker搭建環境 板書: 一)準備?作: 板書: 解讀docker配置文件: 1)安裝docker和docker-compose 2) 停?之前的redis-server 3) 使?docker獲取redis鏡像 二)編排redis主從節點 板書:?編輯 1) 編寫docker-compose.yml 2) 啟動所有容器 3) 查看運??志 …

    spark-Schema 定義字段強類型和弱類型

    在數據處理和存儲中&#xff0c;Schema&#xff08;模式&#xff09;定義了數據的結構和字段屬性&#xff0c;其中字段的強類型和弱類型是重要的概念&#xff0c;直接影響數據的驗證、存儲和處理方式。以下是詳細解釋&#xff1a; 1. 強類型&#xff08;Strongly Typed&#x…

    2024睿抗編程賽國賽-題解

    2024睿抗編程賽國賽題解 RC-u1 大家一起查作弊 題目重述 我們需要從給定的多行字符串中提取出所有的關鍵詞&#xff0c;并計算這些關鍵詞的可疑分數總和、總長度以及關鍵詞的數量。具體步驟如下&#xff1a; 關鍵詞定義&#xff1a;由大寫字母、小寫字母、數字組成的字符串&a…

    控制LED燈設備

    本章分別使用C庫和系統調用的文件操作方式控制開發板的LED燈&#xff0c;展示如何在應用層通過系統提供的設備文件控制相關硬件。 本章的示例代碼目錄為&#xff1a;base_code/linux_app/led/sys_class_leds。 9.1. LED子系統 在Linux系統中&#xff0c;絕大多數硬件設備都有…