歸并排序~

歸并排序是經典的排序算法之一,是分治思想的體現。雖然在排序大多用sort就能搞定,但是有些題用可以用歸并順帶就解決掉了(比如求逆序對)。

歸并排序大概就是先將整個序列分為足夠小的片段,然后在每個小片段里面進行排序,然后再依次合并,排序。過程如下圖 (圖源@努力的老周) 。

接下來用洛谷里一道求逆序對的題來用代碼進行展示:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 5e5+5;
int a[N],b[N];
int n,x;
int ans;
void merge_pai(int l, int mid, int r)
{int i=l, j=mid, k=l;while(i<mid&&j<=r){if(a[i]<=a[j])//小的那個先合進去b[k++]=a[i++];else{b[k++]=a[j++];ans+=mid-i;//此時加上前面所有大于的就是逆序對的數量}}while(i<mid) b[k++]=a[i++];//把前半部分剩余的給加上while(j<=r) b[k++]=a[j++];//加上后半部分剩余的for(int i=l; i<=r; i++)a[i]=b[i];
}
void merge_sort(int l, int r)
{if(l>=r) return ;int mid=(l+r)/2;merge_sort(l,mid);//將序列分為前半部分merge_sort(mid+1,r);//和后半部分merge_pai(l,mid+1,r);//將此時序列進行排序
}
void solve()
{cin >> n;for(int i=1; i<=n; i++) cin >> a[i];merge_sort(1,n);//開始分cout << ans;
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);int t=1;
//	cin >> t;while(t--) solve();
}

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

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

相關文章

UUG杭州站 | 團結引擎1.5.0 OpenHarmony新Feature介紹

PPT下載地址&#xff1a;https://u3d.sharepoint.cn/:b:/s/UnityChinaResources/EaZmiWfAAdFFmuyd6c-7_3ABhvZoaM69g4Uo2RrSzT3tZQ?e2h7RaL 在2025年4月12日的Unity User Group杭州站中&#xff0c;Unity中國OpenHarmony技術負責人劉偉賢帶來演講《團結引擎1.5.0 OpenHarmony新…

有效的聚水潭數據集成到MySQL案例

聚水潭數據集成到MySQL的技術案例分享 在本次技術案例中&#xff0c;我們將探討如何通過輕易云數據集成平臺&#xff0c;將聚水潭的采購退貨單數據高效、準確地集成到MySQL數據庫中的BI云妃秀采購退貨表。這個過程不僅需要處理大量的數據&#xff0c;還要確保數據的完整性和實…

win11 VSCode 強制彈窗微軟登錄

今天在一臺新電腦上配置VSCode同步的時候&#xff0c;用了微軟賬號&#xff0c;因為這臺電腦比較特殊&#xff0c;不方便科學上網&#xff0c;所以一開始用的微軟賬戶登錄&#xff0c;導致和GitHub賬號登錄的配置、擴展等等不同步。 后面準備改用GitHub賬號登錄發現不行&#…

Milvus 全面解析

Milvus是鷹科鷹屬的一種猛禽,以飛行速度快、視力敏銳和適應能力強而聞名。 Zilliz 以其開源高性能、高可擴展性矢量數據庫 Milvus 命名,該數據庫可在從筆記本電腦到大型分布式系統等各種環境中高效運行。它既可以作為開源軟件使用,也可以作為云服務使用。 Milvus 由 Zilli…

【復刻】人工智能技術應用如何影響企業創新(2007-2023年)

AI 技術如何推動企業創新&#xff0c;是新質生產力形成與發展的核心問題。深入研究這一議題&#xff0c;有助于為當前的創新管理實踐提供有效方案&#xff0c;進而助力中國經濟實現高質量發展。參照李玉花&#xff08;2024&#xff09;的做法&#xff0c;對來自中國工業經濟《人…

快消零售AI轉型:R2AIN SUITE如何破解效率困局

引言 快消零售行業正經歷從“規模擴張”到“精益運營”的轉型陣痛&#xff0c;消費者需求迭代加速、供應鏈復雜度攀升、人力成本持續走高&#xff0c;倒逼企業通過技術升級實現業務重塑[1]。RAIN SUITE以AI應用中臺為核心&#xff0c;針對快消零售場景打造全鏈路提效方案&…

計算機網絡八股文--day1

從瀏覽器輸入url到顯示主頁的過程&#xff1f; 1. 瀏覽器查詢域名的IP地址 2. 瀏覽器和服務器TCP三次握手 3. 瀏覽器向服務器發送一個HTTP請求 4. 服務器處理請求&#xff0c;返回HTTP響應 5. 瀏覽器解析并且渲染頁面 6. 斷開連接 其中使用到的協議有DNS協議&#xff08…

Vector和list

一、Vector和list的區別——從“它們是什么”到“區別在哪兒” 1. 它們是什么&#xff1f; Vector&#xff1a;類似于一排排整齊的書架&#xff08;數組&#xff09;&#xff0c;存放元素時&#xff0c;元素排成一條線&#xff0c;連續存儲。可以很快通過編號&#xff08;索引…

VCS X-PROP建模以及在方針中的應用

VCS X-PROP建模以及在方針中的應用 摘要&#xff1a;VCS X-Prop&#xff08;X-Propagation&#xff09;是 Synopsys VCS 仿真工具中的一種高級功能&#xff0c;用于增強 X 態&#xff08;未知態&#xff09;和 Z 態&#xff08;高阻態&#xff09;在 RTL 仿真中的建模和傳播能力…

HPE ProLiant DL360 Gen11 服務器,配置 RAID 5 教程!

今天的任務&#xff0c;是幫客戶的一臺HPE ProLiant DL360 Gen11 服務器&#xff0c;配置RAID 5。依然是按照我的個人傳統習慣&#xff0c;順便做一個教程&#xff0c;分享給有需要的粉絲們。如果你在實際操作中&#xff0c;遇到了什么問題&#xff0c;歡迎在評論區留言&#x…

PyTorch深度神經網絡(前饋、卷積神經網絡)

文章目錄 神經網絡概述神經元模型多層感知機前饋神經網絡網絡拓撲結構數學表示基本傳播公式符號說明整體函數視角 卷積神經網絡卷積神經網絡發展簡史第一代&#xff08;1943-1980&#xff09;第二代&#xff08;1985-2006&#xff09;第三代&#xff08;2006-至今&#xff09;快…

三軸云臺之控制算法協同技術篇

三軸云臺的控制算法協同技術是確保云臺在復雜動態環境下實現高精度、高穩定性運動控制的核心&#xff0c;其技術體系涵蓋多傳感器融合、多算法協同以及多目標優化三個關鍵維度。以下從技術架構與實現路徑展開分析&#xff1a; 一、多傳感器融合&#xff1a;構建環境感知基礎 三…

Adobe DC 2025安裝教程

一.軟件下載 點此下載 二.軟件安裝

[Java實戰]Spring Boot 整合 Freemarker (十一)

[Java實戰]Spring Boot 整合 Freemarker (十一) 引言 Apache FreeMarker 作為一款高性能的模板引擎&#xff0c;憑借其簡潔語法、卓越性能和靈活擴展性&#xff0c;在 Java Web 開發中占據重要地位。結合 Spring Boot 的自動化配置能力&#xff0c;開發者能快速構建動態頁面、…

DeepSeek:開啟能源領域智能化變革新時代

目錄 一、DeepSeek 與能源領域變革的邂逅1.1 DeepSeek 在人工智能領域的地位與特點1.2 能源行業面臨的挑戰與變革需求1.3 DeepSeek 在能源領域應用的重要性和意義 二、能源政策解讀與科普新助手2.1 能源政策解讀的深度變革2.2 能源科普的創新使者 三、能源項目可行性分析新利器…

uniapp設置 overflow:auto;右邊不顯示滾動條的問題

設置了overflow&#xff1a;auto;或者其它overflow的屬性不顯示滾動條是因為在uniapp中默認隱藏了滾動條 解決方法&#xff1a; //強制顯示滾動條 ::-webkit-scrollbar {width: 8px !important;background: #ccc !important;display: block !important;}//設置滾動條顏色.cu-…

hyper-v安裝ubuntu后時磁盤空間擴容

使用hyper-v創建虛擬機Ubuntu 22.04&#xff0c;直接使用的是磁盤鏡像&#xff0c;原磁盤空間只有12GB&#xff0c;明顯不夠用呀&#xff0c;現在想要擴展到50GB&#xff0c;準備開始。 1、先關閉Ubuntu&#xff0c;再hyper-v管理器中調整磁盤容量到50GB 2、進入虛擬機 3、準備…

Prometheus 的介紹與部署(入門)

一、什么是Prometheus&#xff1b; 1.介紹 Prometheus 是一個功能強大的監控工具&#xff0c;適用于各種環境。通過簡單的安裝和配置&#xff0c;可以快速實現對系統和服務的監控。無論是單機環境、容器化環境還是 Kubernetes 集群&#xff0c;Prometheus 都能提供靈活…

Angular 知識框架

一、Angular 基礎 1. Angular 簡介 Angular 是什么&#xff1f; 基于 TypeScript 的前端框架&#xff08;Google 維護&#xff09;。 適用于構建單頁應用&#xff08;SPA&#xff09;。 核心特性 組件化架構 雙向數據綁定 依賴注入&#xff08;DI&#xff09; 模塊化設計…

注解和 XML 兩種方式有什么區別?

注解和 XML 是兩種常見的配置方式&#xff08;尤其在 Java 開發中&#xff0c;如 Spring 框架&#xff09;&#xff0c;它們的主要區別體現在配置方式、代碼耦合性、可讀性、維護性等方面。以下是兩者的對比&#xff1a; 1. 配置方式 注解&#xff08;Annotation&#xff09; 在…