藍橋杯算法之基礎知識(7)---排序題的快排和歸并排序

一、快排

》快排方法,就三步

1.隨便選一個值作為基準值x

2.拿選中的這個x值劃分隊列為左右兩個區間(左邊的都小于x,右邊的都大于x)

3.然后遞歸左區間和右區間就行

》代碼舉例:

#qs排序#1 6 7 8 6 5 4
#先找比較點,再劃分區間,再遞歸---遞歸注意遞歸終止條件
#關鍵劃分區間:一開始l,r都在邊界外,然后q[i]<x i++;q[j]>x j--;
#易錯點:1.將x賦值為索引,而不是具體的值---導致在使用的過程中,索引對應的值一直在變化
#2.忘記i,j的賦值
#3.遞歸調用的時候,選擇應該是l,j和j+1到r,因為注意會有j<r的情況發生,如果選擇是l,i和i+1,r
#就會對應重復的比如2,2,那么就會不斷的滿足遞歸,進而不斷的使用遞歸,無法終止n=1e5+10def qs(l,r,q):if l>=r:returnx=q[(l+r)//2]i=l-1j=r+1while i<j:i+=1while q[i]<x:i+=1j-=1while q[j]>x:j-=1if i<j:q[i],q[j]=q[j],q[i]qs(l,i,q)qs(i+1,r,q)n=int(input())
q=[0]
q.extend(list(map(int,input().split())))
qs(1,n,q)
for i in range(1,n+1):print(q[i],end=" ")

或者看圖片比較清晰:

二、歸并排序

》歸并方法,也是三步

1.首先同樣是排序的套路 確定分界點

2.遞歸左半邊 、右半邊

3合并(這個合并其實就是設計一個k,去存放當前merge的左邊和右邊的合并【同時排序】結果)

//合并這一步,隊列k,是由原隊列依次從L和mid+1開始,依次右移比較最小的,就放到k里面,最后得到的k隊列這就是合并的結果

》代碼舉例:

#先選中值,然后左右遞歸,然后合并
#關鍵點:合并,使用另外一個數組去存最終的結果,并賦值給(更新)原數組---這一步很容易忘記
#易錯點:1像排序這種問題,一般都要寫個終止條件
#2像排序這種問題,最忌直接將傳入的參數l,r直接進行操作,而是將其分別賦給i,j,萬一
#后面你要操作也是對i,j進行操作,而不是對傳入的參數l,r進行操作,防止影響后面的遞歸等等
#3.推薦以后左邊的字母換成L,因為小寫的l和1不好區分
#4注意對于歸并來說要將最后的另外一個數組去賦給原數組,即不斷的更新原數組,進而使得
#在遞歸的時候,是已經排好序的數組,而不是仍為亂序的q
#5同時注意在給將k給q數組賦值的時候,q的起始值是要從L開始,而不是從1開始,因為根據遞歸傳入的
#參數不同,L是時刻在變化的N=1e5+10def merge(l,r,q):if l>=r:returnmid=(l+r)//2merge(l,mid,q)merge(mid+1,r,q)i=lj=mid+1k=[0]if i<j:while i<=mid and j<=r:if q[i]<q[j]:k.append(q[i])i+=1else:k.append(q[j])j+=1while i<=mid:k.append(q[i])i+=1while j<=r:k.append(q[j])j+=1for i in range(l,r+1):q[i]=k[i-l+1]n=int(input())
m=[0]
m.extend(list(map(int,input().split())))
#print(m)
merge(1,n,m)
for i in range(1,n+1):print(m[i],end=" ")

》當然也可以看這個圖片更舒服一點

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

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

相關文章

緩存未命中

緩存未命中&#xff08;Cache Miss&#xff09; 發生在 CPU 訪問某塊內存時&#xff0c;該地址不在當前緩存&#xff08;L1/L2/L3&#xff09;中&#xff0c;導致程序被迫從更慢的內存&#xff08;RAM&#xff09;讀取數據&#xff0c;嚴重拖慢程序執行速度。 &#x1f4cd; 一…

AR眼鏡:化工安全生產的技術革命

在石化企業的壓縮機組巡檢中&#xff0c;佩戴AR眼鏡的巡檢員眼前實時顯示著設備溫度場分布和振動頻譜曲線&#xff0c;單臺設備巡檢時間從45分鐘縮短至18分鐘。這不僅是效率的提升&#xff0c;更是化工安全生產的一場智能革命。一、行業痛點&#xff1a;傳統化工巡檢的困境與挑…

消息中間件RabbitMQ(從入門到精通)

RabbitMQ概念_MQ 消息隊列 MQ全稱Message Queue(消息隊列),是在消息的傳輸過程中保存消息的容器。多用于系統之間的異步通信。 同步通信相當于兩個人當面對話,你一言我一語。必須及時回復 異步通信相當于通過第三方轉述對話,可能有消息的延遲,但不需要二人時刻保持聯系。…

前端學習之后端java小白(五)之多表查詢/事務

一、多表查詢概念二、概述 1. 內連接隱式內連接 SELECT 字段列表 FROM 表1&#xff0c;表2... WHERE 條件顯示內連接SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 條件2. 外連接 左外連接SELECT 列名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 連接條件;右外連接SELECT 列名…

Java全棧學習筆記34

# JDBCjava database connection Java 數據庫連接技術## JDBC 驅動程序如果需要通過jdbc技術連接關系型數據庫&#xff0c;就需要為jdbc提供一個該數據庫的驅動。驅動程序由對應的數據庫廠商提供。mysql提供了針對于各種語言的驅動程序。去官網下載和java相關的驅動即可## JDB…

如何為MySQL中的JSON字段設置索引

背景 MySQL在2015年中發布的5.7.8版本中首次引入了JSON數據類型。自此&#xff0c;它成了一種逃離嚴格列定義的方式&#xff0c;可以存儲各種形狀和大小的JSON文檔&#xff0c;例如審計日志、配置信息、第三方數據包、用戶自定義字段等。 雖然MySQL提供了讀寫JSON數據的函數&am…

【學習日記】

1.上午看了會面經&#xff0c;八股&#xff0c;很多看不懂1.5排查本地mysql服務啟動問題2.刷了兩道題翻轉二叉樹的Dfs和bfs遞歸方法&#xff0c;看了幾分鐘看懂了&#xff0c;一開始刷題&#xff0c;沒有這種感覺&#xff0c;可能思維上升了3.下午做了會ppt4.看了ssm的一個gith…

本地大模型部署指南-Ollama與HuggingFace對比

在本地部署大模型時&#xff0c;用 Ollama 和 Hugging Face (HF) 確實有很大區別&#xff0c;涉及系統、硬件、訓練、推理方式&#xff0c;以及能否查看模型源代碼。下面我分幾個維度說明&#xff1a; 系統和安裝 Ollama 定位是「開箱即用」的本地大模型運行環境。 自帶運行時&…

河北周邊有哪些比較靠譜的智算中心?

河北省通過算力普惠、綠色能源、數據開放、金融支持四大支柱政策&#xff0c;推動智算中心高質量發展。河北及周邊地區的智算中心已形成高可靠性、先進技術和戰略協同的布局。那么&#xff0c;河北周邊有哪些比較靠譜的智算中心&#xff1f;一、河北周邊智算中心盤點?1、尚航懷…

電動汽車充電標準之 — 國標 GB/T 18487《電動汽車傳導充電系統》 簡介

GB/T 18487 的全稱是 《電動汽車傳導充電系統》 &#xff0c;它是中國電動汽車充電領域最基礎、最核心的國家標準之一。該標準規定了電動汽車傳導充電系統的通用要求、通信協議、安全要求等&#xff0c;是整個中國充電基礎設施建設的基石。 與您之前了解的IEC 61851類似&#x…

溫濕度傳感器如何守護工業制造?

在工業制造、農業養殖、倉儲物流乃至文物保護等領域&#xff0c;環境溫濕度的精確監測是保障品質與安全的關鍵。溫濕度傳感器作為無聲的守護者&#xff0c;如何通過穩定可靠的數據采集&#xff0c;為現代工業生產的精細化與智能化管理提供堅實基礎&#xff1f;本文將深入探討其…

破壁·融合·共贏:杭州大成慧谷基金與涉海科技混改項目公司正式啟航!

2025 年 7 月 15 日,一家融合國企基金實力與民企創新活力的混合所有制項目公司正式誕生——由杭州大成慧谷股權投資基金管理有限公司與山東涉海海洋生物科技有限公司共同出資設立的武創慧聚創芯科學技術(上海)有限公司,當日完成法律合規手續。此前,上海武創大智高新技術集團副總…

洛谷 P1271 【深基9.例1】選舉學生會-普及-

P1271 【深基9.例1】選舉學生會 題目描述 學校正在選舉學生會成員&#xff0c;有 nnn&#xff08;1≤n≤9991 \le n\le 9991≤n≤999&#xff09;名候選人&#xff0c;每名候選人編號分別從 111 到 nnn&#xff0c;現在收集到了 mmm&#xff08;1≤m≤20000001 \le m \le 20000…

【AI】AI 評測入門(二):Prompt 迭代實戰從“能跑通”到“能落地”

“Prompt 不是寫出來的&#xff0c;是測出來的。” ——這是我迭代 5 個版本后&#xff0c;最深的體悟。 上一篇《AI 評測入門&#xff08;一&#xff09;&#xff1a;先搞懂你的數據集)》&#xff0c;我們講了標簽體系、自測集、評測集、Langfuse 數據結構化——那是 AI 評測的…

【好靶場】SQLMap靶場攻防繞過 (一)

0x00 前言 最近遇到很多在做基礎靶場的小伙伴們都在SQLMap一把索&#xff0c;那么所幸搞一個SQLMap繞過的靶場。 我們是好靶場&#xff0c;一個立志于讓所有學習安全的同學用上好靶場的團隊。 https://github.com/haobachang-1/haobachangBlog/ https://github.com/haobach…

DeepSeek輔助編寫的利用quick_xml把xml轉為csv的rust程序

提示詞請用rust quickxml庫實現讀取xml的row和c標簽信息&#xff0c;并輸出到csv格式&#xff0c;要求是&#xff1a;數值型c&#xff0c;輸出標簽的內容&#xff0c;字符串型c(t “inlineStr”)&#xff0c;輸出的內容&#xff0c;row的r屬性表是行號&#xff0c;c的r屬性是字…

logback-spring.xml文件說明

項目里剛好用到&#xff0c;用豆包生成以下說明&#xff0c;此處作為記錄。以下是一個 logback-spring.xml 配置文件示例&#xff0c;結合了 Spring Boot 特性&#xff0c;支持環境區分、日志滾動和不同級別日志輸出&#xff0c;并包含詳細注釋&#xff1a;<?xml version&q…

專題:2025社交媒體營銷與電商融合趨勢報告:抖音、小紅書、短劇、直播全拆解|附210+份報告PDF、數據儀表盤匯總下載

原文鏈接&#xff1a;https://tecdat.cn/?p43853 原文出處&#xff1a;拓端抖音號拓端tecdat 3年前&#xff0c;電商還停留在“貨架擺貨、用戶搜關鍵詞下單”的傳統模式&#xff0c;社交媒體只是品牌“打知名度”的輔助工具&#xff1b;如今&#xff0c;用戶刷抖音直播能直接下…

大模型API密鑰生成規則分析

大模型API密鑰生成規則分析 一、核心生成原則與安全基礎 1.1 密碼學安全隨機數生成 大模型API密鑰的核心安全基礎在于高熵值隨機數生成,需滿足以下技術標準: 熵值要求:至少128位(16字節),推薦256位(32字節),通過密碼學安全偽隨機數生成器(CSPRNG)實現 生成算法:…

太陽光度計在光伏電站的用途

太陽光度計在光伏電站中具有多重關鍵用途&#xff0c;能夠為電站的規劃、運行、維護及能效提升提供科學依據。以下是其具體應用場景及價值分析&#xff1a;1. 太陽能資源評估與電站選址優化核心功能&#xff1a;太陽光度計通過測量直接太陽輻射&#xff08;DNI&#xff09;、散…