【数据结构与算法】归并排序

归并排序目录

  • 一.归并排序的原理
  • 二.有序的归并实现
  • 三.无序的归并实现(分治法)
  • 四.归并排序的实现
  • 五.完整代码

一.归并排序的原理

在这里插入图片描述
如何将这两个数组排序?
在这里插入图片描述

二.有序的归并实现

将一个数组分为两段,那边的值小就加入到新数组中,直到一边已经加完了.
在这里插入图片描述
有一种情况就是一边已经加入完了,但是还有一边还有没有加入的,所以我们需要添加进数组,最后在拷贝到原数组.

在这里插入图片描述

三.无序的归并实现(分治法)

我们也已经注意到了,上面的是有序的两端合并排序,那如果无序的呢?
我们可以拆分为有序的,就是一直拆为只有1个元素,1个元素必定有序,然后可以采用归并.

四.归并排序的实现

在这里插入图片描述

在这里插入图片描述

五.完整代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void mergeAdd(int arr[], int left, int mid, int right,int *temp)
{int i = left;   //指向左边数组最小的元素位置int j = mid;    //指向右边数组最小的元素位置int k = left;   //临时数组的下标while (i < mid && j <= right){if (arr[i] < arr[j]){temp[k++] = arr[i++];}else{temp[k++] = arr[j++];}}while (i < mid){temp[k++] = arr[i++];}while (j <= right){temp[k++] = arr[j++];}//把temp中的内容拷贝到arr数组中memcpy(arr + left, temp+left, sizeof(int) * (right - left + 1));
}void mergeSort(int arr[], int left, int right, int* temp)
{int mid = 0;if (left < right){mid = left + (right - left) / 2;//数据太大时可以防止溢出mergeSort(arr, left, mid, temp);mergeSort(arr, mid + 1, right, temp);mergeAdd(arr, left, mid+1, right, temp);}
}int main()
{int beauties[] = { 5,1,3,6,4,2,8,7 };int len = sizeof(beauties) / sizeof(beauties[0]);int* temp = new int[len];int mid = len / 2;mergeSort(beauties, 0, len - 1, temp);printf("执行归并大法:\n");for (int i = 0; i < len; i++){printf("%d ", beauties[i]);}system("pause");return 0;
}

运行结果:
在这里插入图片描述

2024年8月19日16:10:18
递归真特么烦!去™的.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/403969.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

骑行耳机哪个牌子好用?选购骑行耳机需要注意的五大选购陷阱!

作为一名有着多年骑行经验的专业评测师&#xff0c;对骑行装备已经有着超过五年的研究&#xff0c;骑行耳机也不例外&#xff0c;期间也是亲身测试了数十款骨传导耳机&#xff0c;可以说骑行耳机是专为骑行爱好者设计的&#xff0c;不需要入耳佩戴&#xff0c;而且佩戴舒服&…

基于云快充协议1.5-1.6版本的充电桩系统软件-充电桩系统 -新能源车充电平台源码

介绍 SpringBoot 框架&#xff0c;充电桩平台充电桩系统充电平台充电桩互联互通协议云快充协议1.5-1.6协议新能源汽车二轮车公交车二轮车充电-四轮车充电充电源代码充电平台源码Java源码 充电桩平台充电桩系统充电桩小程序充电桩管理系统充电桩项目充电桩协议充电桩微信小程序S…

鸿蒙开发入门day10-组件导航

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;还请三连支持一波哇ヾ(&#xff20;^∇^&#xff20;)ノ&#xff09; 目录 组件导航 (Navigation) 设置页面显示模式 设置标题栏模式 设置菜…

整数分解5.3.2

题 前面写过逆序的 最后一个数后面不要有空格 #include <stdio.h>int main() {int x;scanf("%d",&x);int d;do{dx%10;printf("%d",d);if(x>10){printf(" ");}x/10;}while(x>0);printf("\n");return 0; } 现在这个是…

Linux网络:基于OS的网络架构

Linux网络&#xff1a;OS视角下的网络架构 网络分层模型OSI 七层模型TCP/IP 五层模型 协议操作系统与网络网络相关命令ifconfigpingnetstat 本博客将基于操作系统&#xff0c;讲解计算机网络的设计理念&#xff0c;帮助大家理解操作系统与网络之间的关系。 网络分层模型 网络…

Positional Encoding | 位置编码【详解】

文章目录 1、位置编码的2种方案2、位置编码3、公式详解 &#xff1a; 绝对位置 、 相对位置4、代码4.1 代码14.2 代码2 1、位置编码的2种方案 transformer的作者刚开始说固定的位置编码和可学习的位置编码的效果是差不多的&#xff0c;后来证明可学习的位置编码没有太大的必要&…

系统工程与信息系统(上)

系统工程 概念 【系统工程】是一种组织管理技术。 【系统工程】是为了最好的实现系统的目的&#xff0c;对系统的组成要素、组织结构、信息流、控制机构进行分析研究的科学方法。 【系统工程】从整体出发、从系统观念出发&#xff0c;以求【整体最优】 【系统工程】利用计算机…

Oracle 12.2集群搭建遇到ORA-ORA-15227,ORA-15031,ORA-15018问题处理

报错&#xff1a; [FATAL] [DBT-30056] Labeling of disks failed. ORA-15227: could not perform label set/clear operation ORA-15031: disk specification /dev/asmdisk/ocr01 matches no disks [FATAL] [DBT-30002] Disk group OCR creation failed. ORA-15018: diskgrou…

(javaweb)SpringBootWeb案例(毕业设计)案例--部门管理

目录 1.准备工作 2.部门管理--查询功能 3.前后端联调 3.部门管理--新增功能 1.准备工作 mapper数据访问层相当于dao层 根据页面原型和需求分析出接口文档--前后端必须遵循这种规范 大部分情况下 接口文档由后端人员来编写 前后端进行交互基于restful风格接口 http的请求方式…

K8s部署安装

一.K8s简介 Kubernetes&#xff08;通常缩写为K8s&#xff09;是一个开源的容器编排平台&#xff0c;用于自动化容器化应用的部署、扩展和管理。它最初由Google开发&#xff0c;现在由云原生计算基金会&#xff08;CNCF&#xff09;维护。Kubernetes 的核心目标是提供一个一致…

奇迹世界2单机版安装教程+GM工具+无虚拟机

今天给大家带来一款单机游戏的架设&#xff1a;奇迹世界2单机版。 另外&#xff1a;本人承接各种游戏架设&#xff08;单机联网&#xff09; 本人为了学习和研究软件内含的设计思想和原理&#xff0c;带了架设教程仅供娱乐。 教程是本人亲自搭建成功的&#xff0c;绝对是完整…

中职物联网实训室

一、中职物联网实训室建设背景 在当今科技日新月异的浪潮中&#xff0c;物联网技术以其迅猛的发展势头&#xff0c;成为了撬动数字化转型的关键杠杆&#xff0c;深刻地重塑着经济社会的面貌。面对这一变革&#xff0c;社会对精通物联网技术的应用型人才需求激增。鉴于此&#x…

Linux-DNS域名解析服务

系列文章目录 提示&#xff1a;仅用于个人学习&#xff0c;进行查漏补缺使用。 1.Linux网络设置 2.LinuxDHCP服务 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言提示&#xff1a;以下是本篇文章…

职业教育嵌入式实验室|嵌入式系统实验室|嵌入式实训室建设方案

一、建设背景 在数字化浪潮的推动下&#xff0c;我们已迈入一个以信息技术为主导的崭新时代。在这个时代&#xff0c;嵌入式系统不仅是智能设备和应用的核心&#xff0c;更是推动各行各业创新和变革的关键力量。无论是智能家居的便捷生活体验&#xff0c;工业控制的精确操作&a…

Kafka运行机制(一):Kafka集群启动,controller选举,生产消费流程

前置知识 Kafka基本概念https://blog.csdn.net/dxh9231028/article/details/141270920?spm1001.2014.3001.5501 1. Kafka集群启动 Kafka在启动集群中的各个broker时&#xff0c;broker会向controller注册自己&#xff0c;并且从controller节点同步集群元数据。 broker是Kaf…

《深入浅出多模态》(九)多模态经典模型:MiniGPT-v2、MiniGPT5

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

数字化转型对金融服务业的影响

数字化转型正在塑造每个行业&#xff0c;从快速消费品到金融&#xff0c;每个行业都受到新兴技术的影响。 那么&#xff0c;数字化转型在金融服务中扮演什么角色&#xff1f;这对招聘前景有何影响&#xff1f; 我们探讨了数字化转型对该行业的影响、其对招聘策略的影响、数据…

Nios II的BSP Editor

1.菜单打开BSP Editor &#xff08;1&#xff09; &#xff08;2&#xff09; &#xff08;3&#xff09; 项目文件夹 -> software文件夹 -> ... _bsp文件夹 -> settings.bsp文件 2.文件打开BSP Editor 选中项目文件&#xff0c;右键&#xff0c;Nios II -> …

Nginx--地址重写Rewrite

一、什么是Rewrite Rewrite对称URL Rewrite&#xff0c;即URL重写&#xff0c;就是把传入Web的请求重定向到其他URL的过程 URL Rewrite最常见的应用是URL伪静态化&#xff0c;是将动态页面显示为静态页面方式的一种技术。比如http://www.123.com/news/index.php?id123 使用U…