【數據結構——內排序】二路歸并排序(頭歌實踐教學平臺習題)【合集】

目錄😋

任務描述

測試說明

我的通關代碼:

測試結果:


任務描述

本關任務:實現二路歸并算法。

測試說明

平臺會對你編寫的代碼進行測試:

測試輸入示例:
11
18 2 20 34 12 32 6 16 5 8 1?
(說明:第一行是元素個數,第二行是待排序的原始關鍵字數據。)

輸出示例:
排序前:18 2 20 34 12 32 6 16 5 8 1?
第1趟歸并:2 18 20 34 12 32 6 16 5 8 1?
第2趟歸并:2 18 20 34 6 12 16 32 1 5 8?
第3趟歸并:2 6 12 16 18 20 32 34 1 5 8?
第4趟歸并:1 2 5 6 8 12 16 18 20 32 34?
排序后:1 2 5 6 8 12 16 18 20 32 34?

開始你的任務吧,祝你成功!


我的通關代碼:

#include <malloc.h>
#include <stdio.h>#define MAXL 100     //最大長度
typedef int KeyType; //定義關鍵字類型為int
typedef char InfoType;typedef struct {KeyType key;   //關鍵字項InfoType data; //其他數據項,類型為InfoType
} RecType;       //查找元素的類型int count = 1; //全局變量,記錄第幾趟歸并void CreateList(RecType R[], KeyType keys[], int n) //創建順序表
{for (int i = 0; i < n; i++) // R[0..n-1]存放排序記錄R[i].key = keys[i];
}
void DispList(RecType R[], int n) //輸出順序表
{for (int i = 0; i < n; i++)printf("%d ", R[i].key);printf("\n");
}//一次歸并:將兩個有序表R[low..mid]和R[mid+1..high]歸并為一個有序表R[low..high]中
void Merge(RecType R[], int low, int mid, int high) {/********** Begin *********/RecType *R1 = (RecType *)malloc((high - low + 1) * sizeof(RecType));int i = low, j = mid + 1, k = 0;while (i <= mid && j <= high) {if (R[i].key <= R[j].key)R1[k++] = R[i++];elseR1[k++] = R[j++];}while (i <= mid)R1[k++] = R[i++];while (j <= high)R1[k++] = R[j++];for (k = 0, i = low; i <= high; i++, k++)R[i] = R1[k];free(R1);/********** End **********/
}void MergePass(RecType R[], int length, int n) //實現一趟歸并
{/********** Begin *********/int i;for (i = 0; i + 2 * length - 1 < n; i += 2 * length)Merge(R, i, i + length - 1, i + 2 * length - 1);if (i + length - 1 < n)Merge(R, i, i + length - 1, n - 1);/********** End **********/
}void MergeSort(RecType R[], int n) //二路歸并排序算法
{/********** Begin *********/int length = 1;printf("排序前:");DispList(R, n);while (length < n) {MergePass(R, length, n);printf("第%d趟歸并:", count++);DispList(R, n);length *= 2;}printf("排序后:");DispList(R, n);/********** End **********/
}int main() {/********** Begin *********/int n;scanf("%d", &n);KeyType keys[MAXL];RecType R[MAXL];for (int i = 0; i < n; i++)scanf("%d", &keys[i]);CreateList(R, keys, n);MergeSort(R, n);/********** End **********/return 0;
}

測試結果:


在這里插入圖片描述

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

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

相關文章

近期數據安全事件通報處罰案例分析與建議

近期典型事件案例 案例一&#xff1a;北京某公司未建立數據安全管理制度和操作規程&#xff0c;造成大量公民個人信息泄露 北京某公司的數據管理人員&#xff0c;某天發現公司的客戶數據疑似泄露在境外非法網站上隨后報警。經檢查&#xff0c;該公司的技術人員在數據庫系統測試…

基于 webRTC Vue 的局域網 文件傳輸工具

文件傳輸工具&#xff0c;匿名加密&#xff0c;只需訪問網頁&#xff0c;即可連接到其他設備&#xff0c;基于 webRTC 和 Vue.js coturn TURN 服務器 docker pull coturn/coturn docker run -d --networkhost \-v $(pwd)/my.conf:/etc/coturn/turnserver.conf \coturn/coturn…

【FFmpeg】FFmpeg 內存結構 ⑥ ( 搭建開發環境 | AVPacket 創建與釋放代碼分析 | AVPacket 內存使用注意事項 )

文章目錄 一、搭建開發環境1、開發環境搭建參考2、項目搭建 二、AVPacket 創建與釋放代碼分析1、AVPacket 創建與釋放代碼2、Qt 單步調試方法3、單步調試 - 分析 AVPacket 創建與銷毀代碼 三、AVPacket 內存使用注意事項1、謹慎使用 av_init_packet 函數2、av_init_packet 函數…

D94【python 接口自動化學習】- pytest進階之fixture用法

day94 pytest的fixture詳解 學習日期&#xff1a;20241210 學習目標&#xff1a;pytest基礎用法 -- pytest的fixture詳解 學習筆記&#xff1a; fixture的介紹 fixture是 pytest 用于將測試前后進行預備、清理工作的代碼處理機制。 fixture相對于setup和teardown來說有以…

2024首屆世界酒中國菜國際地理標志產品美食文化節成功舉辦篇章

2024首屆世界酒中國菜國際地理標志產品美食文化節成功舉辦&#xff0c;開啟美食文化交流新篇章 近日&#xff0c;首屆世界酒中國菜國際地理標志產品美食文化節在中國國際地理標志大廈成功舉辦&#xff0c;這場為期三天的美食文化盛會吸引了來自世界各地的美食愛好者、行業專家…

AI發展與LabVIEW程序員就業

人工智能&#xff08;AI&#xff09;技術的快速發展確實對許多行業帶來了變革&#xff0c;包括自動化、數據分析、軟件開發等領域。對于LabVIEW程序員來說&#xff0c;AI的崛起確實引發了一個值得關注的問題&#xff1a;AI會不會取代他們的工作&#xff0c;導致大量失業&#x…

展柜設計公司平面布置小程序的分析與設計springboot+論文源碼調試講解

3系統的需求分析 需求分析的任務是通過詳細調查展柜設計公司平面布置小程序軟件所需的對象&#xff0c;充分了解系統的工作概況&#xff0c;明確功能實現的各種需求&#xff0c;然后在此基礎上確定系統的功能。系統必須充分考慮今后可能的擴充和改變。 3.1可行性分析 通過對…

家校通小程序實戰教程10部門管理前后端連接

目錄 1 加載后端的數據2 為什么不直接給變量賦值3 保存部門信息4 最終的效果5 總結 現在部門管理已經完成了后端功能和前端開發&#xff0c;就需要在前端調用后端的數據完成界面的展示&#xff0c;而且在錄入部門信息后需要提交到數據庫里&#xff0c;本篇我們介紹一下前后端如…

spark-sql 備忘錄

wordcount sc.textFile("../data/data.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(__).collect 讀取json 文件 并通過sql 執行 join 查詢 public static void main(String[] args) {SparkSession session SparkSession.builder().master(&qu…

Java并發編程學習(二)

線程的狀態 有說5種的&#xff0c;有說6種的 5種的&#xff0c;從操作系統層面來講 初始狀態&#xff1a;也就是語言層面創建了線程對象&#xff0c;還未與操作系統線程關聯。Java中也就是new了一個線程&#xff0c;還未調用。可運行狀態&#xff1a;&#xff08;就緒狀態&a…

Docker方式安裝人人影視離線完整安裝包

本文軟件由網友 ルリデ 推薦&#xff1b; 上周&#xff0c;人人影視創始人宣布將人人影視二十年字幕數據開源分享 目前提供了兩種使用方式&#xff1a; “在線應用” &#xff1a;意味著需要有互聯網才可以使用。官方提供了網站&#xff1a;https://yyets.click “離線使用” …

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal

Leetcode 3389. Minimum Operations to Make Character Frequencies Equal 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3389. Minimum Operations to Make Character Frequencies Equal 1. 解題思路 這一題從答題從test的結果來說來說做出的人很少&#xff0c;主要確實有些…

大文件處理的終極武器:Yield詳解

【大文件處理的終極武器&#xff1a;Yield詳解】&#x1f680; 一、大文件處理的痛點 內存限制數據量巨大傳統方法效率低 二、Yield解決方案 def read_large_file(file_path):with open(file_path, r) as file:# 每次只讀取一行&#xff0c;而不是全文for line in file:yie…

SpringBoot 學習

SpringBoot 學習 什么是 Springboot Spring Boot 是 Spring 提供的一個子項目&#xff0c;用于快速構建 Spring 應用程序 傳統的問題&#xff1a; 導入依賴繁瑣項目配置繁瑣 SpringBoot 的特性 起步依賴&#xff1a;整合所有 web 的依賴配置好了自動配置&#xff1a;bean…

到達率的變化動態調整服務器的服務率,實現負載均衡,提高資源利用效率

中心可以根據任務到達率的變化動態調整服務器的服務率,實現負載均衡,提高資源利用效率 服務率和到達率 中心可以根據任務到達率的變化動態調整服務器的服務率,實現負載均衡,提高資源利用效率服務率(Service Rate)到達率(Arrival Rate)控制參數實現負載均衡的方法在云計…

最新全開源IM即時通訊系統源碼(PC+WEB+IOS+Android)部署指南

全開源IM&#xff08;即時通訊&#xff09;系統源碼部署是一個復雜但系統的過程&#xff0c;涉及多個組件和步驟。以下是一個詳細的部署指南&#xff0c;旨在幫助開發者或系統管理員成功部署一個全開源的IM系統&#xff0c;如OpenIM。      IM即時通訊系統源碼準備工作   …

CAD c# 生成略縮圖預覽

代碼如下&#xff1a; using (Transaction tr currentdb.TransactionManager.StartTransaction()){//當前數據庫開啟事務using (Database tempdb new Database(false, true)) //創建臨時數據庫(兩個參數&#xff1a;是否創建符號表&#xff0c;不與當前文檔關聯){try{Bitmap …

CloudberryDB(二) 演化路線圖

CloudberryDB 制定了演化路線圖&#xff08;https://github.com/orgs/cloudberrydb/discussions/369&#xff09;并在逐步改進&#xff0c;這是 Cloudberry Database 發揮獨特價值之處。 計劃、正在進行或已完成的一些工作。 支持輕松升級 PostgreSQL 內核版本。 原有 Greenp…

單片機:實現呼吸燈(附帶源碼)

單片機實現呼吸燈詳細解讀 呼吸燈是一種常見的燈光效果&#xff0c;廣泛應用于電子產品、汽車、家居照明等領域。其基本特性是通過逐漸增亮和減弱的方式&#xff0c;使得燈光呈現出“呼吸”的效果&#xff0c;給人一種平緩、舒適的視覺感受。在嵌入式系統中&#xff0c;呼吸燈…

[面試題]--索引用了什么數據結構?有什么特點?

答&#xff1a;使用了B樹&#xff1a; 時間復雜度&#xff1a;O(logN),可以有效控制樹高 B樹特點&#xff1a; 1.葉子節點之間有相互鏈接的作用&#xff0c;會指向下一個相近的兄弟節點。 MySQL在組織葉子節點使用的是雙向鏈表 2.非葉子節點的值都保存在葉子節點當中 MySQL非葉…