归并排序的非递归写法

归并排序的非递归写法

核心:

通过while循环控制gap

通过for循环控制归并的区间

但要注意begin2和end2,如果超过n-1的话就会将随机数拷贝到原数组中,从而引发报错。

 

通过调试可以发现报错是由于随机值引发的。 

void merge_sort_non(int* a, int n)
{int gap = 1;//每组数据的个数--->及刚开始一个一个归//int* tmp = new int[n];int* tmp = new int[n];while (gap < n){for (int i = 0; i < n; i += 2 * gap){//[i,i+gap-1][i+gap,i+2*gap-1]int begin1 = i, end1 = i + gap - 1;int begin2 = i + gap , end2 = i + 2 * gap - 1;//归并过程中右半区间可能就不存在if (begin2 >= n){break;//左边有序,右边没有就不需要归并了}//归并过程中右半区间算多了if (end2 >= n){end2 = n - 1;}int index = i;//while (begin1 <= end1 && begin2 <= end2){if (a[begin1] < a[begin2]){tmp[index++] = a[begin1++];}else{tmp[index++] = a[begin2++];}}while (begin1 <= end1){tmp[index++] = a[begin1++];}while (begin2 <= end2){tmp[index++] = a[begin2++];}for (int j = i; j <= end2; ++j)//防止区间的左边存在问题{//归完之后立刻拷贝回去,防止将tmp中的随机值也考入a中a[j] = tmp[j];}}gap *= 2;}delete[] tmp;
}

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

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

相关文章

辽宁梵宁教育:设计培训领域的靠谱之选

在当今日益竞争激烈的社会中&#xff0c;设计行业正以其独特的魅力和无限的创意空间吸引着越来越多的年轻人。然而&#xff0c;想要在这个领域取得一席之地&#xff0c;仅凭一腔热情是远远不够的&#xff0c;专业的培训和教育显得尤为重要。辽宁梵宁教育&#xff0c;作为设计培…

测开面经(pytest测试案例,接口断言,多并发断言)

pytest对用户登录接口进行自动化脚本设计 a. 创建一个名为"test_login.py"的测试文件&#xff0c;编写以下测试脚本 import pytest import requests# 测试用例1&#xff1a;验证登录成功的情况 # 第一个测试用例验证登录成功的情况&#xff0c;发送有效的用户名和密…

springboot实现上传文件接口(简单版)

使用springboot实现一个最简单版本的上传文件接口 private String uploadPath "C:/imageFiles";RequestMapping(value "/upload", method RequestMethod.POST)private Result upload( RequestParam("modelName") String modelName,RequestPar…

Keil 出现 “access to xxx was denied” 错误

先说结论&#xff1a;文件路径太长导致的 事情是这样的&#xff0c;在用STM32的开发板调试CC1101的收发工程&#xff0c;运行程序呢&#xff0c;结果电脑死机重启了&#xff0c;顺便吐槽一下&#xff0c;最近用VMware经常重启。 电脑重启后再打开工程&#xff0c;发现程序能烧…

腾讯电商运营起来竟然这么简单!视频号小店操作玩法一文详解!

大家好&#xff0c;我是电商小布。 在新型电商玩法的兴起下&#xff0c;很多的平台都在电商行业内分到了一杯羹。 腾讯自然也就坐不住了&#xff0c;背靠自身的视频号平台&#xff0c;推出了视频号小店这个项目。 有很多的小伙伴想要趁着这个初期阶段&#xff0c;来加入到其…

Linux gcc day5粘滞位

粘滞位 背景&#xff1a;一定时在一个公共目录&#xff08;root创建&#xff09;下。进行临时文件的操作 Linux系统中有很多人&#xff0c;我们需要在一个公共目录下&#xff0c;进行临时文件的操作&#xff08;增删查改&#xff09; 创建一个根目录下的dir&#xff08;mytmp…

基于liorf_localization的重定位

文章目录 概述保存和加载地图利用现有地图进行重定位代码实现Q&&AQ1: point cloud is not in dense format概述 在LIO-SAM的基础上进行重定位,主要是指在已经建立的地图上进行位置的快速定位,这对于机器人在已知环境中的快速启动或者在丢失定位后的恢复尤为重要。L…

链表之双向链表的实现

铁汁们大家好&#xff0c;我们上一篇博客学习了单链表&#xff0c;这节课让我们继续往深学习&#xff0c;学习一下双线链表&#xff0c;话不多说&#xff0c;我们开始吧&#xff01; 目录 1.双向链表 2.顺序表和链表的优缺点 3.双向链表的实现 1.双向链表 1.我们要实现的双线…

设计模式之观察者模式讲解

概念&#xff1a;定义对象间一种一对多的依赖关系&#xff0c;使得当每一个对象改变状态&#xff0c;则所有依赖于它的对象都会得到通知并被自动更新。 抽象主题&#xff1a;或者叫被观察者&#xff0c;可以持有、增加、删除观察者对象。具体主题&#xff1a;实现抽象主题定义的…

挖掘未来:私有LTE/5G网络驱动智慧矿山的自动化

私有LTE/5G网络为世界上一些最偏远的角落提供无线连接。如果没有无线通信网络&#xff0c;各行业就无法满足增加产量、降低运营成本和减少环境破坏的需求。 在本案例研究中&#xff0c;我们着眼于自动化如何改变无线网络的动态。智慧矿山要求运营商无缝集成多个系统和应用程序…

Xinstall助力提升用户体验:一键打开App用户页面

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着App数量的激增&#xff0c;如何让用户更便捷地打开和使用App&#xff0c;提升用户体验&#xff0c;成为了开发者和广告主们亟待解决的问题。此时&#xff0c;Xinstall作为国内专业…

教你如何优雅做好项目管理?

导言 项目本身无好坏之分&#xff0c;项目管理有做好与做坏之别。在互联网大厂的体制下&#xff0c;想要做坏一个项目很难&#xff08;可以通过换人、追加资源等方式消除风险&#xff09;&#xff0c;想要做好一个项目不容易&#xff0c;需要团队及 PM 付出大量心血和精力。在…