787. 歸并排序

文章目錄

  • Question
  • Ideas
  • Code

Question

給定你一個長度為 n
的整數數列。

請你使用歸并排序對這個數列按照從小到大進行排序。

并將排好序的數列按順序輸出。

輸入格式
輸入共兩行,第一行包含整數 n

第二行包含 n
個整數(所有整數均在 1~109
范圍內),表示整個數列。

輸出格式
輸出共一行,包含 n
個整數,表示排好序的數列。

數據范圍
1≤n≤100000
輸入樣例:
5
3 1 2 4 5
輸出樣例:
1 2 3 4 5

Ideas

Code

// 歸并排序步驟
// 1. 選取中間點
// 2. 遞歸左右區間
// 3. 合并兩個區間
#include <iostream>using namespace std;
const int N = 1e5 + 10;
int a[N], tem[N];void merge_sort(int *a, int l, int r)
{if (l >= r) return;int mid = l + r >> 1;merge_sort(a, l, mid), merge_sort(a, mid + 1, r);int i = l, j = mid + 1, k = 0;while(i <= mid && j <= r){if (a[i] <= a[j]) // 穩定tem[k ++] = a[i ++];elsetem[k ++] = a[j ++];}while(i <= mid){tem[k ++] = a[i ++];}while(j <= r){tem[k ++] = a[j ++];}for (int i = l, j = 0; i <= r; i ++){a[i] = tem[j ++ ];}
}
int main()
{int n;scanf("%d", &n);for (int i = 0; i < n; i ++) scanf("%d", &a[i]);merge_sort(a, 0, n - 1);for (int i = 0; i < n; i ++) printf("%d ", a[i]);return 0;
}

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

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

相關文章

JUC并發編程(JUC核心類、TimeUnit類、原子操作類、CASAQS)附帶相關面試題

目錄 1.JUC并發編程的核心類 2.TimeUnit&#xff08;時間單元&#xff09; 3.原子操作類 4.CAS 、AQS機制 1.JUC并發編程的核心類 雖然java中的多線程有效的提升了程序的效率&#xff0c;但是也引發了一系列可能發生的問題&#xff0c;比如死鎖&#xff0c;公平性、資源管理…

【100天精通python】Day34:使用python操作數據庫_ORM(SQLAlchemy)使用

目錄 專欄導讀 1 ORM 概述 2 SQLAlchemy 概述 3 ORM&#xff1a;SQLAlchemy使用 3.1 安裝SQLAlchemy&#xff1a; 3.2 定義數據庫模型類&#xff1a; 3.3 創建數據表&#xff1a; 3.4 插入數據&#xff1a; 3.5 查詢數據&#xff1a; 3.6 更新數據&#xff1a; 3.7 刪…

C/C++中volatile關鍵字詳解

1. 為什么用volatile? C/C 中的 volatile 關鍵字和 const 對應&#xff0c;用來修飾變量&#xff0c;通常用于建立語言級別的 memory barrier。這是 BS 在 "The C Programming Language" 對 volatile 修飾詞的說明&#xff1a; A volatile specifier is a hint to a…

【Git】 git push origin master Everything up-to-date報錯

hello&#xff0c;我是索奇&#xff0c;可以叫我小奇 git push 出錯&#xff1f;顯示 Everything up-to-date 那么看看你是否提交了message 下面是提交的簡單流程 git add . git commit -m "message" git push origin master 大多數伙伴是沒寫git commit -m "…

AI自動駕駛

AI自動駕駛 一、自動駕駛的原理二、自動駕駛的分類三、自動駕駛的挑戰四、自動駕駛的前景五、關鍵技術六、自動駕駛的安全問題七、AI數據與自動駕駛八、自動駕駛的AI算法總結 自動駕駛技術是近年來備受關注的熱門話題。它代表了人工智能和機器學習在汽車行業的重要應用。本文將…

UML之四種事物

目錄 結構事物 行為事物 分組事物&#xff1a; 注釋事物 結構事物 1.類(Class) -類是對一組具有相同屬性、方法、關系和語義的對象的描述。一個類實現一個或多個接口 2.接口(interface) -接口描述 了一個類或構件的一個服務的操作集。接口僅僅是定義了一組操作的規范&…

案例16 基于Spring Boot實現學生新增案例

基于Spring Boot實現學生新增。 1. 創建Spring Boot項目 創建Spring Boot項目&#xff0c;項目名稱為case16-springboot-student01。 ? 2. 設置項目信息 ? 3. 選擇依賴 選擇Lombok ? 選擇Spring Web ? 4. 設置項目名稱 ? 5. Maven依賴 <?xml version"1.0&qu…

Nature子刊 |腸道宏病毒組揭示百歲老人長壽秘訣

發表期刊&#xff1a;nature microbiology 發表時間&#xff1a;2023 影響因子&#xff1a;28.3 DOI: 10.1038/s41564-023-01370-6 研究背景 衰老是一種不可逆轉的自然過程&#xff0c;隨著年齡的增長&#xff0c;機體諸多方面出現功能性下降&#xff0c;與衰老相關的疾病&a…

生成式AI顛覆傳統數據庫的十種方式

對于生成式AI的所有閃光點&#xff0c;這個新時代最大的轉變可能深埋在軟件堆棧中。AI算法正在不易覺察地改變一個又一個數據庫。他們正在用復雜、自適應且看似更直觀的AI新功能顛覆傳統數據庫。 目錄 1、向量和嵌入 2、查詢模型 3、建議 4、索引范例 5、數據分類 6、更…

Unity 框架學習--1

由淺入深&#xff0c;慢慢演化實現框架 兩個類的實現代碼完全一樣&#xff0c;就只有類名或類型不一樣的時候&#xff0c;而且還需要不斷擴展&#xff08;未來會增加各種事件&#xff09;的時候&#xff0c;這時候就用 泛型 繼承 來提取&#xff0c;繼承解決擴展的問題&#…

【RabbitMQ與SpringBoot集成測試收發消息】

【RabbitMQ與SpringBoot集成測試收發消息】 一、環境說明二、實驗步驟三、小結 一、環境說明 安裝環境&#xff1a;虛擬機VMWare Centos7.6 Maven3.6.3 JDK1.8RabbitMQ版本&#xff1a;rabbitmq-server-3.8.8-1.el7.noarch.rpm編程工具Idea 運行JDK為17 二、實驗步驟 在Rab…

List和數組互轉方法以及踩坑點

一、數組轉List 1. 使用for循環逐個添加 String[] arr {"A", "B", "C"}; List<String> list new ArrayList<>(); for (String element : arr) {list.add(element); }2. 使用Arrays.asList(arr) String[] arr {"A", …

TypeScript 泛型的深入解析與基本使用

系列文章目錄 文章目錄 系列文章目錄前言一、泛型的概念二、泛型函數三、泛型類四、泛型接口五、泛型約束總結前言 泛型是TypeScript中的一個重要概念,它允許我們在定義函數、類或接口時使用參數化類型,增強了代碼的靈活性和重用性。本文將深入探討泛型的概念,以及如何在Ty…

智能駕駛系列報告之一:智能駕駛 ChatGPT時刻有望來臨

原創 | 文 BFT機器人 L3 功能加速落地&#xff0c;政策標準有望明確 L2 發展日益成熟&#xff0c;L3 功能加速落地。根據市場監管總局發布的《汽車駕駛自動化分級》與 SAE發布的自動駕駛分級標準&#xff0c;自動駕駛主要分為 6 個級別&#xff08;0 級到 5 級&#xff0c;L0 …

Tomcat多實例部署及nginx+tomcat的負載均衡和動靜分離

Tomcat多實例部署 安裝 jdk、tomcat&#xff08;流程可看之前博客&#xff09; 配置 tomcat 環境變量 [rootlocalhost ~]# vim /etc/profile.d/tomcat.sh#tomcat1 export CATALINA_HOME1/usr/local/tomcat/tomcat1 export CATALINA_BASE1/usr/local/tomcat/tomcat1 export T…

Delphi調用WindowsAPI獲取窗口進程

Delphi有封裝的很好的WindowsAPI&#xff0c;直接調用即可&#xff0c;大體上和C差不多&#xff0c;有些地方需要額外處理。 給出一個實例&#xff1a; varg_process: THandle;procedure initGlobal(); beginvarg_handle: HWND;g_handle : FindWindow(clsName, name);if g_ha…

矩陣定理復習記錄

矩陣復習 矩陣導數定理 若A是一個如下矩陣&#xff1a; A [ a 11 a 12 a 21 a 22 ] A \begin{bmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{bmatrix} A[a11?a21??a12?a22??] y是一個向量矩陣&#xff1a; y ? [ y 1 y 2 ] \vec{y}\begin{bmatrix}y_1\\y_2\e…

在vue項目使用數據可視化 echarts ,柱狀圖、折線圖、餅狀圖使用示例詳解及屬性詳解

官網地址&#xff1a;Apache ECharts ?一、下載插件并在頁面中引入 npm install echarts --save 頁面導入&#xff1a; import * as echarts from echarts 全局導入&#xff1a; main.js 中&#xff0c;導入并注冊到全局 import echarts from echarts Vue.prototype.$echart…

Clone函數

概述 Clone函數是一種用于復制的計算機函數。在程序編寫中&#xff0c;除了自定義一個拷貝構造函數來實現對象復制外&#xff0c;還可以實現一個clone函數。這需要借助編譯器實現的一個隱藏拷貝構造函數&#xff0c;這樣的做法&#xff0c;更省心。 中文名clone函數外文名clon…

C# 使用FFmpeg.Autogen對byte[]進行編解碼

C# 使用FFmpeg.Autogen對byte[]進行編解碼&#xff0c;參考&#xff1a;https://github.com/vanjoge/CSharpVideoDemo 入口調用類&#xff1a; using System; using System.IO; using System.Drawing; using System.Runtime.InteropServices; using FFmpeg.AutoGen;namespace F…