当前位置: 首页 > news >正文

程序分享--排序算法--归并排序

关注我,持续分享逻辑思维&管理思维; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;
有意找工作的同学,请参考博主的原创:《面试官心得--面试前应该如何准备》,《面试官心得--面试时如何进行自我介绍》《做好面试准备,迎接2024金三银四》。

-------------------------------------正文----------------------------------------

归并排序:概述

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。

归并排序:算法描述

方法一、递归法(Top-down)
1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列。
2.设定两个指针,最初位置分别为两个已经排序序列的起始位置。
3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置。
4.重复步骤3直到某一指针到达序列尾。
5.将另一序列剩下的所有元素直接复制到合并序列尾。

方法二、迭代法(Bottom-up),原理如下(假设序列共有n个元素):
将序列每相邻两个数字进行归并操作,形成ceil(n/2)个序列,排序后每个序列包含两/一个元素
若此时序列数不是1个则将上述序列再次归并,形成ceil(n/4)个序列,每个序列包含四/三个元素
重复步骤2,直到所有元素排序完毕,即序列数为1.

#include<iostream>void Merge(int* vec, int start, int mid, int end) 
{int leftIndex = start;int rightIndex = mid + 1;int temp[end-start+1];int tempIndex = 0;while (leftIndex <= mid && rightIndex <= end) {if (vec[leftIndex] <= vec[rightIndex]) {temp[tempIndex++] = vec[leftIndex++];}else {temp[tempIndex++] = vec[rightIndex++];}}while (leftIndex <= mid) {temp[tempIndex++] = vec[leftIndex++];}while (rightIndex <= end) {temp[tempIndex++] = vec[rightIndex++];}for (int i = start; i <= end; i++) {vec[i] = temp[i - start];}
}void MergeSort(int* vec, int start, int end) 
{if (start >= end)return;int mid = (start + end) / 2;MergeSort(vec, start, mid);MergeSort(vec, mid + 1, end);Merge(vec, start, mid, end);
}int main() {int vec = { 4,8,9,2,100,400,20,7,17,31,22,0,1,55,30 };cout << "归并排序前:";for (int i = 0; i < 15; i++)cout << vec[i] << ' ';cout << std::endl;MergeSort(vec, 0, 14);cout << "归并排序后:";for (int i = 0; i < 15; i++)cout << vec[i] << ' ';cout << std::endl;
}

相关文章:

程序分享--排序算法--归并排序

关注我&#xff0c;持续分享逻辑思维&管理思维&#xff1b; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导&#xff1b; 有意找工作的同学&#xff0c;请参考博主的原创&#xff1a;《面试官心得--面试前应该如何准备》&#xff0c;《面试官心得--面试时如何进行自…...

pg数据库和mysql区别

区别一 PostgreSQL (通常称为 PG) 和 MySQL 都是广泛使用的关系型数据库管理系统 (RDBMS)。虽然它们都是用于存储和管理数据的关系数据库&#xff0c;但它们在一些方面有很大的区别&#xff0c;如下所述&#xff1a; 数据类型&#xff1a;PostgreSQL 支持更多的数据类型&#…...

Jetpack Compose 动画正式开始学习

1. 简单值动画 //将一个Color简单值 从一个值 变化到另一个 另一个简单值 就用 animateColorAsStateval backgroundColor by animateColorAsState(if (tabPage TabPage.Home) Purple100 else Green300) 动画其实就是 一个状态不停发生改变导致 组件不断重组产生的过程 2.…...

iOS 17.4报错: libopencore-amrnb.a[arm64]

iOS 17.4报错&#xff1a; libopencore-amrnb.a[arm64] iOS 17.4 模拟器运行报错解决方案 iOS 17.4 模拟器运行报错 Building for ‘iOS-simulator’, but linking in object file (/XXX/lib/libopencore-amrnb.a[arm64]2) built for ‘iOS’ 解决方案 在Podfile里添加如下设…...

鼓楼夜市管理wpf+sqlserver

鼓楼夜市管理系统wpfsqlserver 下载地址:鼓楼夜市管理系统wpfsqlserver 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于C#wpf架构和sql server数据库 功能模块&#xff1a; 登录注册 鼓楼夜市管理系统主界面所有店铺信…...

【五、接口自动化测试】5分钟掌握python + requests接口测试

你好啊&#xff01;我是山茶&#xff0c;一个持续探索AI 测试的程序员&#xff01; 在做接口测试时&#xff0c;在python中内置了HTTP库 urllib&#xff0c;可以用于发送http请求。基于urllib二次封装的三方库Requests&#xff0c;相较于urllib更佳简介易用。所以&#xff0c;…...

双边市场的基本理论

双边市场由两个不同类型的用户组成&#xff0c;通过一个中介机构或平台进行交易&#xff0c;其中一边用户的决策会影响另一边用户的结果。这种影响被称为间接网络外部性&#xff0c;它导致了平台在吸引和平衡两边用户时面临的挑战。 平台定价在双边市场中成为核心问题&#xf…...

R统计学2 - 数据分析入门问题21-40

往期R统计学文章&#xff1a; R统计学1 - 基础操作入门问题1-20 21. 如何对矩阵按行 (列) 作计算&#xff1f; 使用函数 apply() vec 1:20 # 转换为矩阵 mat matrix (vec , ncol4) # [,1] [,2] [,3] [,4] # [1,] 1 6 11 16 # [2,] 2 7 12 17 # [3,] …...

蓝桥杯2023年-买瓜(dfs,类型转换同样耗时)

题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜&#xff0c;每个瓜的重量为 Ai 。 小蓝刀功了得&#xff0c;他可以把任何瓜劈成完全等重的两份&#xff0c;不过每个瓜只能劈一刀。 小蓝希望买到的瓜的重量的和恰好为 m 。 请问小蓝至少要劈多少个瓜才能买到重量恰好…...

生成式人工智能服务安全基本要求实务解析

本文尝试明晰《基本要求》的出台背景与实践定位&#xff0c;梳理《基本要求》所涉的各类安全要求&#xff0c;以便为相关企业遵循执行《基本要求》提供抓手。 引言 自2022年初以来&#xff0c;我国陆续发布算法推荐、深度合成与生成式人工智能服务相关的规范文件&#xff0c;…...

nginx详解,配置http,https,负载均衡,反向代理,SMTP 代理步骤说明

Nginx 是一款高性能的开源 Web 服务器,同时也可以用作反向代理服务器、负载均衡器、HTTP 缓存、HTTPS 中继、以及作为邮件代理服务器等。以下是 Nginx 可以实现的一些常见用途: 静态内容服务: Nginx 可以用来提供静态内容,比如 HTML、CSS、JavaScript 文件等。 动态内容服务…...

ARTS Week 20

Algorithm 本周的算法题为 1222. 可以攻击国王的皇后 在一个 下标从 0 开始 的 8 x 8 棋盘上&#xff0c;可能有多个黑皇后和一个白国王。 给你一个二维整数数组 queens&#xff0c;其中 queens[i] [xQueeni, yQueeni] 表示第 i 个黑皇后在棋盘上的位置。还给你一个长度为 2 的…...

python如何读取文件

这里的文件是txt文件&#xff0c;office文件不支持。 假如有一个pi_digits的txt文件&#xff0c;里面的内容是“3.1415926” 如果要读取这个文件的内容&#xff0c;需要调取pathlib模块&#xff0c;并把路径告知python。同时python文件必须要和目标读取文件在一个文件夹里。 …...

InnoDB和MyISAM存储引擎

InnoDB mysql默认存储引擎 支持事务&#xff0c;行级锁&#xff08;并发量大&#xff09;&#xff0c;外键约束&#xff0c;容量大&#xff0c;支持缓存&#xff0c;支撑主键自增&#xff0c; 全文检索&#xff0c;不存储表的总行数&#xff0c;需要sql逐行统计 MyISAM 不…...

DataGrip 2023:让数据库开发变得更简单、更高效 mac/win

JetBrains DataGrip 2023是一款功能强大的数据库IDE&#xff0c;专为数据库开发和管理而设计。通过DataGrip&#xff0c;您可以连接到各种关系型数据库管理系统(RDBMS)&#xff0c;并使用其提供的一组工具来查询、管理、编辑和开发数据库。 DataGrip 2023软件获取 DataGrip 2…...

突破编程_C++_设计模式(命令模式)

1 命令模式的基本概念 C 命令模式是一种设计模式&#xff0c;它允许将请求封装为一个对象&#xff0c;从而可以用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。命令模式的主要目的是将请求封装为对象&#xff0c;从而可…...

LeetCode102题:二叉树的层序遍历(python3)

代码思路&#xff1a;使用队列先进先出的特性&#xff0c;queue[]不为空进入for循环&#xff0c;tmp存储每层的节点&#xff0c;将结果添加至res[]中。 python中使用collections中的双端队列deque()&#xff0c;其popleft()方法可达到O(1)时间复杂度。 class Solution:def lev…...

linux服务器保存git账号密码命令

1.保存git账号密码 git config --global credential.helper store 2.查看git账号密码 cd回车 ls -a cat .git-credentials 步骤: 先输入 git config --global credential.helper store 然后进入代码目录&#xff0c;git pull 会提示输入git账号、密码&#xff0c;因为我们提前输…...

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的田间杂草检测系统(深度学习模型+UI界面+Python代码+训练数据集)

摘要&#xff1a;开发用于田间杂草识别的系统对提高农业运营效率和提升作物产出至关重要。本篇文章详尽阐述了如何应用深度学习技术开发一个用于田间杂草识别的系统&#xff0c;并附上了完备的代码实现。该系统基于先进的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5…...

java Lambda表达式如何支持静态方法引用

java Lambda表达式如何支持静态方法引用 在Java中&#xff0c;Lambda表达式支持静态方法引用&#xff0c;允许你直接使用静态方法作为Lambda表达式的实现。静态方法引用使用类名和方法名来引用静态方法。 下面是一个简单的示例&#xff0c;展示了如何在Lambda表达式中使用静态…...

Llama-3.2-3B新手教程:Ollama环境配置+基础使用

Llama-3.2-3B新手教程&#xff1a;Ollama环境配置基础使用 1. 环境准备与快速部署 1.1 系统要求 在开始之前&#xff0c;请确保您的系统满足以下基本要求&#xff1a; 操作系统&#xff1a;Linux/Windows/macOS&#xff08;推荐Linux&#xff09;内存&#xff1a;至少8GB R…...

高效处理视频字幕:MKV批量处理开源工具完全指南

高效处理视频字幕&#xff1a;MKV批量处理开源工具完全指南 【免费下载链接】mkvtoolnix-batch-tool Batch video and subtitle processing program with the ability to add, remove, or extract subtitles from all video files in a directory and its sub-directories. 项…...

什么是redis数据库?要会哪些基础知识

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,可用作数据库、缓存、消息中间件和实时分析引擎。它支持丰富的数据结构(如字符串、哈希、列表、集合、有序集合等),并提供高可用性、持久化、集群扩展等功能,常用于解决高并发、低延迟场景下的数据存储问…...

Java Swing 实战:手把手教你写一个拼图小游戏(一)

1.前言本文基于 Java Swing 实现带登录注册的拼图小游戏&#xff08;跟随 B 站黑马程序员教程练习&#xff09;&#xff0c;适合 Java 初学者、课设练手使用。本文为系列第一篇&#xff0c;主要讲解项目整体结构、登录界面&#xff08;LoginJFrame&#xff09;和注册界面&#…...

Android Photo Picker 避坑指南:从权限管理到低版本兼容的完整方案

Android Photo Picker 避坑指南&#xff1a;从权限管理到低版本兼容的完整方案 在移动应用开发中&#xff0c;图片选择功能几乎是社交、电商类App的标配需求。但就是这个看似简单的功能&#xff0c;却让不少开发者踩过坑&#xff1a;权限申请被用户拒绝、不同Android版本表现不…...

MVP.css暗黑模式终极指南:如何完美适配用户偏好与系统设置

MVP.css暗黑模式终极指南&#xff1a;如何完美适配用户偏好与系统设置 【免费下载链接】mvp MVP.css — Minimalist classless CSS stylesheet for HTML elements 项目地址: https://gitcode.com/gh_mirrors/mv/mvp MVP.css是一款极简主义的无类CSS样式表&#xff0c;为…...

Windows Subsystem for Android全流程实战攻略:从环境搭建到场景落地

Windows Subsystem for Android全流程实战攻略&#xff1a;从环境搭建到场景落地 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for And…...

网易云音乐无损解析工具:从音质痛点到音乐收藏全方案

网易云音乐无损解析工具&#xff1a;从音质痛点到音乐收藏全方案 【免费下载链接】Netease_url 网易云无损解析 项目地址: https://gitcode.com/gh_mirrors/ne/Netease_url 你是否曾在制作音乐混剪时&#xff0c;因找不到高解析度音频素材而妥协&#xff1f;是否为整理多…...

解密AI艺术二维码:5步掌握control_v1p_sd15_qrcode_monster实战进阶

解密AI艺术二维码&#xff1a;5步掌握control_v1p_sd15_qrcode_monster实战进阶 【免费下载链接】control_v1p_sd15_qrcode_monster 项目地址: https://ai.gitcode.com/hf_mirrors/monster-labs/control_v1p_sd15_qrcode_monster 你是否曾为传统二维码的单调外观感到遗…...

大模型转型实战指南:从入门到求职,避坑全攻略

这两年&#xff0c;大模型技术彻底打破行业壁垒&#xff0c;从科研领域的专属议题&#xff0c;变成后端、测试、运维乃至跨行者的职业新选项&#xff0c;更是不少人职业转型的核心方向。 日常对接学员和行业朋友时&#xff0c;类似的疑问反复出现&#xff1a; “我做测试/运维…...