进地铁建设公司网站网站改版具体建议

news/2025/9/26 23:14:45/文章来源:
进地铁建设公司网站,网站改版具体建议,江门平台入口,免费做app和网站的平台有哪些归并排序 前言一、归并排序递归实现#xff08;1#xff09;归并排序的核心思路#xff08;2#xff09;归并排序实现的核心步骤#xff08;3#xff09;归并排序码源详解#xff08;4#xff09;归并排序效率分析1#xff09;时间复杂度 O#xff08;N*logN#xf… 归并排序 前言一、归并排序递归实现1归并排序的核心思路2归并排序实现的核心步骤3归并排序码源详解4归并排序效率分析1时间复杂度 ON*logN2空间复杂度 ON稳定性稳定 二、归并排序的非递归实现1 关于递归的缺点的讨论 2 归并排序 非递归算法实现思路3码源详解4运行结果 前言 快速排序前序 归并排序后序 一、归并排序递归实现 1归并排序的核心思路 将 已有序的子序列 合并得到完全有序的序列即先使每个子序列有序再使子序列段间有序。若将两个有序表合并成一个有序表称为二路归并。 2归并排序实现的核心步骤 向下递归 对半分割 。递归返回条件递归到最小1个即是有序 [ 控制的是范围 归并的区间 ]递归到最深处最小时就递归回去开始分按对半分割分出的范围 将 已有序的子序列 合并在 tmp 里进行归并。再将tmp里形成的有序序列拷贝回原数组 【 因为下一次递归回去上一层再进行下一次的归并过程中会将数据在tmp中进行归并会将tmp中的数据覆盖所以要及时将小部分已归并排好序的子序列拷贝回原数组 】再进行递归返回上一层的递归归并直到递归层数都结束。 3归并排序码源详解 void _MergeSort(DataType* a, DataType* tmp, int begin, int end) {if (beginend) { //递归返回的条件不正常的的范围 或 只剩1个数return;}int mid (begin end) / 2;//先递归到最小//[begin,mid][mid1,end]_MergeSort(a, tmp, begin, mid); //数组是从0开始所以endmid-1这样设计_MergeSort(a, tmp, mid1, end);//再进行归并 —— 所以归并的过程设计在递归后面后序//归并到tmp数组再拷贝回去int begin1 begin; int end1 mid;int begin2 mid 1; int end2 end;int index begin; //指向tmp,begin是 根据要进行比较插入的数组的位置 找到其对应在tmp中所对应的位置则不会覆盖前面已经排好序的数据//原型合并两组数且有序while (begin1 end1 begin2 end2) { //其中一组满足了条件就不再继续就跳出循环if (a[begin1] a[begin2]) {tmp[index] a[begin1];}else {tmp[index] a[begin2];}} while (begin1 end1) { //把剩下还没插入tmp的插入进去tmp[index] a[begin1];}while (begin2 end2) { //把剩下还没插入tmp的插入进去tmp[index] a[begin2];}//拷贝回原数组//source dest 拷贝的数组大小memcpy(abegin,tmpbegin,sizeof(DataType)*(end-begin1)); }void MergeSort(DataType* a, int n) {DataType* tmp (DataType*)malloc(sizeof(DataType) * n); //开辟新的数组临时存放用于归并排序过程if (tmp NULL) {perror(malloc fail);return;}//将 待排序的数组、归并过程用的tmp临时数组、归并范围 传过去_MergeSort(a, tmp, 0, n - 1); //因为 主函数中有malloc tmp的操作若递归调用主函数则每次调用都会malloc再free 是对空间上的浪费//因此用子函数进行递归 【_子函数】free(tmp); }4归并排序效率分析 1时间复杂度 ON*logN 二分 有 logN 层 也正是因为是logN层递归深度不会太深所以不用考虑非递归当然非递归也能实现。 每层有N个数进行归并排序 N*logN 2空间复杂度 ON 开辟了个 空间大小为N的 新的数组用于归并有序的过程。 在原数组上归并会出现什么问题 会覆盖数据最小的1换到8的位置后8和7就不再保持有序了。 稳定性稳定 二、归并排序的非递归实现 归并排序是 二分的思想 logN层 递归不会太深、且现编译器优化后递归、非递归的性能差距没有那么大了 所以不用考虑非递归但非递归实现也不难。下面带大家简单实现一下。 1 关于递归的缺点的讨论 递归的缺点递归消耗栈帧递归的层数太深容易爆栈。 【栈的空间比较小在x86(32位)环境下只有8M。对比同一环境下的堆则有2G。因为平时函数调用开不了多少个栈帧。理论上递归深度1w 可能就会爆 但实际上5k左右就爆掉了】 这时就需要改非递归了 ★递归—非递归 改循环利用 [ 数据结构 ] 栈本质上是通过malloc 在堆上开辟的内存空间内存空间足够大递归逆着来求如斐波那契数列逆着来求也是可行的【归并排序的非递归实现 也是个很好的例子】 而归并排序的非递归实现则是用到了其中的第三点 。 2 归并排序 非递归算法实现思路 虽说不是递归是递归的逆序版。是直接从最深层次逆序回去直接开始归并排序免去了向下深入递归。虽说不是递归但也算是递归的思路的另一个种实现。 开辟新的数组临时存放用于归并排序过程int gap1gap*2【gap控制归并的范围11归并22归并44归并】for (int i 0; i n; i 2 * gap) { 【i 控制进行比较轮到的组号控制进行归并的组号】归并完一轮将归并好的有序数组拷贝回原数组memcpy 。进入新的一轮归并直至gapn则归并完成 ☆注意的两个情况 6. if (begin2 n) { break; } 第二组不存在这一组不用归并了 7. if (end2 n) { end2 n - 1; } 第二组右边界越界问题修正一下 3码源详解 //归并排序——非递归版 从最底层开始逆着往回求如同斐波那契 void MergeSortNonR(DataType* a,int n) {DataType* tmp (DataType*)malloc(sizeof(DataType) * n); //开辟新的数组临时存放用于归并排序过程if (tmp NULL) {perror(malloc fail);return;}int gap 1;while (gap n) { //gap控制 11归并22归并44归并//i控制进行比较轮到的组号控制归并的组号for (int i 0; i n; i 2 * gap) { //可以通过画出数组在草稿纸上演示理清要比较的数begin1、end1、begin2、end2之间和i、gap的数量关系//[begin1,end1][begin2,end2]归并 int begin1 i; int end1 i gap - 1; //-1 控制下标的边界int begin2 i gap; int 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];}//拷贝回原数组//通过ai、tmpi来找到要拷贝数组部分的对应下标memcpy(a i, tmp i,(end2-i1)*sizeof(DataType));}printf(\n);gap * 2; //gap控制总体归并}free(tmp); }4运行结果

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

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

相关文章

漏洞赏金猎手的新年目标实战指南

本文为漏洞赏金猎人提供实用的新年目标设定框架,涵盖优先级目标选择、可量化指标制定、时间管理策略及常见误区规避。重点强调从理论学习转向实战应用,通过具体行动方案帮助猎手有效提升漏洞挖掘效率与成果转化。漏洞…

做网站容易还是做小程序容易wordpress 中文链接

题意:一个whw\times hwh的二维平面上有nnn个城市,有mmm个弹跳装置,第iii个可以花费tit_iti​的时间从城市pip_ipi​跳到矩形x∈[l,r],y∈[u,d]x\in [l,r],y\in[u,d]x∈[l,r],y∈[u,d]中的任意一个城市。求从111到其他每个城市的最小时间。 w,…

US$100 Free Activation VVDI2 Copy 48 Transponder by OBDII Function Authorization Service

VVDI2 Copy 48 Transponder by OBDII Function Authorization ServiceTips: No need shipping, please pass serial number of your VVDI2. This function will be free for all customers since Jan 1st, 2020.VVDI2 …

python 0入门基础第一课 - Jun

python 0入门基础第一课# 打印hello world print("Hello World")# 单行注释"""多行注释 三个双引号"""# 变量 字符,数字,浮点,布尔name = hellage = 32money = 12.34sex =…

lc1037-有效的回旋镖

难度:简单(初期)题目描述给定平面内三个点,判断这三个点是否可以形成回旋镖示例 输入:points = [[1,1],[2,3],[3,2]] 输出:true输入:points = [[1,1],[2,2],[3,3]] 输出:false题解思路判断是否有点重合 判断任…

日常刷题:cf每日一题+abc+反思复盘

cf round723 BProblem 试图瞪眼法解决未果被数据63909轻松单防Submission 随后开始思考: \[1111 = 101 \cdot 11 \]\[11111 = 1000 \cdot 11+111 \]\[111111 = 10101 \cdot 11 \]如所示,所有的由全1组成的数字都可以…

题解:P13523 [KOI 2025 #2] 序列与查询

题目:长度相同的子段受 \(x\) 影响相同。哇好厉害的性质,可以直接把每个长度的最大子段和跑下来,询问 \(X\) 相当于找 \(val_{len}+lenX\) 最大的 \(len\),预处理 \(O(n^2+qn)\),查询优化? 考虑画到坐标轴上,把…

德州做名片的网站响应式app下载wordpress主题

我正在设计一个小的网络应用程序/游戏。 哪个更好:MySQL表或json文件? 它们都存储信息。 它们都可以由PHP解析。 优点/缺点是什么?这就是我的意思:username | password-------------------seefour | abc123与{"username"…

2025年9月26日 - 20243867孙堃2405

今天只有一节课,英语提高,丰富了我的词汇量

实用指南:(14)ASP.NET Core2.2 中的日志记录

实用指南:(14)ASP.NET Core2.2 中的日志记录pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

HarmonyOS 5 网络编程与材料存储实战:从RESTful API到本地持久化

HarmonyOS 5 网络编程与材料存储实战:从RESTful API到本地持久化pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

老系统-新系统的数据迁移

目录一、核心同步策略设计二、常用ETL工具实现方案方案1:使用开源工具Apache NiFi(适合技术团队自主部署)方案2:使用商用工具DataPipeline(适合企业级自动化同步)方案3:轻量方案(Python+SQL脚本,适合简单场景…

pc 移动的网站开发定制家具设计软件app

爬虫分为两种:1.通用爬虫。2.聚焦爬虫。通用爬虫:搜索引擎用的爬虫系统。一.目标:爬取所有网站的网页下载下来,存放到本地服务器里形成备份。二.抓取流程:a.首选选取一部分已有的url,把这些url放到待爬取队列。b.从队列…

威海哪家网站做的好北京 网站设计公司

展开全部掌握以下几点步骤,即可轻松加墨。1、首先,从打印机上取下墨盒,32313133353236313431303231363533e4b893e5b19e31333365646234这里就不好做介绍了,取下墨盒的方法因机而异。将墨盒上的一层贴纸撕掉,并拿出所需材…

C语言中的for循环

有点高看自己了,以为学了点java的for循环就觉得随便写,和C语言还是有点差别的,希望以后能静下心来学习吧 D:/study/C语言 devc/sh4.c

excell中完成矩阵的转置相乘

例如矩阵A=[3 1;2 4;1 2],B=[1 2;2 4;3 1];想用excell计算AB^T,矩阵相乘用mmult函数,矩阵转置transpose,假如数据保存如下:也就是数据A保存在B2:C4中,B保存在C2:D4中,将结果保存在F2:H4中,操作如下: 1、选中F2…

理解 Elasticsearch 中的分块策略 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

世安建设有限网站福州网站设计哪家做的好

上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架,具体为什么那样设计我也已经在第十篇文章中进行了说明。不过文章发布后很多人都说了这样的分层不是很合理,什么数据库实体应该跟仓储放在一起形成领域对象,什么ViewModel应…

网站建设依循的原则聚通达网站建设

虚拟现实(Virtual Reality,简称VR)是一种通过计算机技术模拟出的一种全新的人机交互方式。它可以通过专门的设备(如头戴式显示器)将用户带入一个计算机生成的虚拟环境之中,使用户能够与这个虚拟环境进行交互…