-代码分享-

归并排序的递归函数

void D_MereSort(int a[], int left, int right, int* tmp)
{
//left和right分别为递归区间的左右端点的下标
//把要归并的两边的区间递归到各只有1个元素就停
if (left >= right)
return;
//mid为递归区间中间下标
int mid = (left + right) / 2;

//递归
D_MereSort(a, left, mid, tmp);
D_MereSort(a, mid+1, right, tmp);//定义begin和end接受left和right
//防止left和right改变,导致出错
int begin1 = left, end1 = mid;
int begin2 = mid+1, end2 = right;
//i必须有且值只能是  左侧区间的左端点  即left
int i = left;//归并算法
while (begin1 <= end1 && begin2 <=end2)
{if (a[begin1] < a[begin2]){tmp[i++] = a[begin1++];}else{tmp[i++] = a[begin2++];}
}
while (begin1 <= end1)
{tmp[i++] = a[begin1++];
}
while (begin2 <= end2)
{tmp[i++] = a[begin2++];
}
int j = left;
//将归并好的放回要排序的数组
for (; j<=right; j++)a[j] = tmp[j];

}

//归并排序的非递归实现
void MergeSort2(int a[], int n)
{
//申请空间
int* tmp = (int*)malloc(sizeof(int) * n);
//gap表示归并的左右区间的元素个数
int gap = 1;
int j = 0;
while (gap < n)//gap不能等于数组的总元素个数
{
for (j = 0; j < n; j += 2 * gap)
{
int i = j; //防止循环变量改变,影响循环

		int begin1 = i, end1 = i + gap - 1;int begin2 = i + gap, end2 = i + 2 * gap - 1;if (begin2 >= n)//右区间  左端点越界,就直接可以结束break;if (end2 >= n)//右区间  右端点越界,就将它改为n-1end2 = n - 1;//归并while (begin1 <= end1 && begin2 <= end2){if (a[begin1] < a[begin2]){tmp[i++] = a[begin1++];}else{tmp[i++] = a[begin2++];}}while (begin1 <= end1){tmp[i++] = a[begin1++];}while (begin2 <= end2){tmp[i++] = a[begin2++];}}int z = 0;//归并结束后,将归并完成的拷贝回去//为下次循环的归并做准备for (z = 0; z < n; z++)a[z] = tmp[z];gap *= 2;
}

}

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

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

相关文章

软件工程知识梳理2-需求分析

需求分析时软件定义的最后一个阶段&#xff0c;它的基本任务时准确回答系统必须做什么的问题。 输出&#xff1a;本阶段必须的输出时软件需求规格说明书。 角色&#xff1a;需求分析员 参与者&#xff1a;用户、需求分析员 需求分析遵循的准则&#xff1a; 必须理解并描述问…

【阿里巴巴】【淘天集团天猫超市食品生鲜供应链】技术线-高级Java研发工程师-供应链计划

所属部门:淘天集团&#xff5c;学历:本科 | 工作年限: 3 年 职位描述 负责淘天集团天猫超市&食品生鲜供应链计划系统研发&#xff0c;包括经营计划&#xff0c;需求计划&#xff0c;补货计划&#xff0c;调拨计划&#xff0c;库存健康&#xff0c;资源计划等多个核心业务负…

各品牌主板快速启动热键对照表及CMOS进入方法

各品牌主板快速启动热键对照表 主板品牌 启动按键 笔记本品牌 启动按键 主机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏碁笔记本 F12 惠普台式机 F12 微星主板 F11 华硕笔记本 ESC 宏碁台式机 F12 梅捷主板 F9 惠普笔…

Linux安装docker以及docker安装软件

1.docker安装 依次运行添加yum源 # 更新yum软件 yum update# 安装epel-release yum install -y epel-release# 清理 yum clean all# 列出所有可用软件包 yum list安装并运行docker yum install -y docker-io systemctl start docker检查安装结果docker info 2.docker安装Rabb…

「优选算法刷题」:寻找峰值

一、题目 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰值元素并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复…

elementui 开始结束时间可以选择同一天不同时间段

先在main.js中导入 import moment from moment <el-row><el-col :span"12"><el-form-item label"考试开始时间" prop"startTime"><el-date-picker v-model"shiJuanXinXiForm.startTime" style"width: 100…

异步解耦之RabbitMQ(二)__RabbitMQ架构及交换机

异步解耦之RabbitMQ(一) RabbitMQ架构 RabbitMQ是一个基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议的消息代理中间件&#xff0c;它通过交换机和队列实现消息的路由和分发。以下是RabbitMQ的架构图&#xff1a; Producer&#xff08;生产者&#…

孪生卷积神经网络(Siamese Convolutional Neural Network)的设计思路

孪生卷积神经网络&#xff08;Siamese Convolutional Neural Network&#xff09;是一种特殊类型的卷积神经网络&#xff0c;主要用于处理需要成对比较的数据&#xff0c;例如判断两个输入是否相似。 以下是孪生卷积神经网络的基本结构&#xff1a; 输入层&#xff1a;这一层…

019代码结构

什么是顺序结构&#xff1f; 什么是选择结构&#xff1f; boolean flag true; // 结果为true会执行大括号内的代码&#xff0c;否则不执行直接跳过 if(flag true){System.out.println("flag为真"); } 双if选择结构 if(flag true){// 结果为true会执行大括号内的代…

python的Flask生产环境部署说明照做成功

最近刚好在我的Linux服务器上部署一个Web服务, 使用了python的Flask框架, 因此本文主要介绍flask在linux环境上的部署。 Flask 是一个轻量级的 Python Web 框架&#xff0c;非常适合快速开发小型到中型的 Web 应用。然而&#xff0c;Flask 自带的服务器通常是用于开发目的&…

【力扣经典面试题】121. 买卖股票的最佳时机

题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最…

EasyCode自动生成CRUD模板(Springboot整合Mybatis)--带完整注解和分页

1. dao 层&#xff1a; ##定义初始变量 #set($tableName $tool.append($tableInfo.name, "Dao")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/dao")…

Vue3-Composition-API(二)

一、computed函数使用 1.computed 在前面我们讲解过计算属性computed&#xff1a;当我们的某些属性是依赖其他状态时&#xff0c;我们可以使用计算属性来处理 在前面的Options API中&#xff0c;我们是使用computed选项来完成的&#xff1b; 在Composition API中&#xff0c…

有哪些好用的洗地机推荐?洗地机品牌推荐

在如今快节奏的生活中&#xff0c;人们对于家居清洁的需求也越来越高。洗地机无疑成为了很多家庭清洁的得力助手。然而&#xff0c;在众多品牌和型号中&#xff0c;到底哪款洗地机值得入手呢&#xff0c;这可能是很多人都会发出的疑问&#xff0c;下面&#xff0c;我们接下来一…

Blazor快速开发框架Known-更换数据库

本文介绍如何更换框架默认的数据库&#xff0c;下面以MySQL数据库为例&#xff1a; 操作步骤 双击KIMS.Shared项目&#xff0c;打开项目文件&#xff0c;引用MySqlConnector数据库访问包 <PackageReference Include"MySqlConnector" Version"2.3.3" …

代码随想录算法训练营第三十六天 | 435. 无重叠区间、763.划分字母区间、56. 合并区间

题目链接&#xff1a;435. 无重叠区间 文章讲解&#xff1a;代码随想录 435. 无重叠区间讲解 视频讲解&#xff1a;贪心算法&#xff0c;依然是判断重叠区间 | LeetCode&#xff1a;435.无重叠区间 思路和解法 题目&#xff1a; 给定一个区间的集合 intervals &#xff0c;…

JDBC - 结构优化1

JDBC - 结构优化1 文章目录 JDBC - 结构优化1三层架构1 什么是三层架构2 三层架构项目搭建 结构优化1 - 学生信息管理1 封装工具类2 ORM3 DAO 三层架构 1 什么是三层架构 **三层架构&#xff1a;**将程序划分为表示层, 业务逻辑层, 数据访问层三层&#xff0c;各层之间采用接…

vit细粒度图像分类(七)TBNet学习笔记

1.摘要 细粒度鸟类图像识别致力于实现鸟类图像的准确分类&#xff0c;是机器人视觉跟踪中的一项基础性工作。鉴于濒危鸟类的监测和保护对保护濒危鸟类具有重要意义&#xff0c;需要采用自动化方法来促进鸟类的监测。在这项工作中&#xff0c;我们提出了一种新的基于机器人视觉…

代码随想录算法训练营29期|day36任务以及具体安排

第八章 贪心算法 part05 435. 无重叠区间 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,b)-> {return Integer.compare(a[0],b[0]);});if(intervals.length 1) return 0;int result 0;for(int i 1 ; i < interva…

新概念英语第二册(49)下

【Key structures】 复合句的语序 复合句可用两种方法构成&#xff1a;一是用连词把从句与主句连接起来&#xff1b;二是用分词结构或不定式。 1、用连词连接的复合句 ① 在复合句中&#xff0c;从句可以是名词从句&#xff08;即起名词的作用&#xff09;。在句子中&#xf…