网站建设部岗位职责wordpress禁止响应

pingmian/2025/10/11 21:32:39/文章来源:
网站建设部岗位职责,wordpress禁止响应,酒类营销网站,手表电商网站归并排序 动图演示#xff1a; 基本思想#xff1a;分治思想 归并排序#xff08;MERGE-SORT#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并#xff0c;得到完全有序的序列#xff1b;即先使每个子…归并排序 动图演示 基本思想分治思想 归并排序MERGE-SORT是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并得到完全有序的序列即先使每个子序列有序再使子序列段间有序。若将两个有序表合并成一个有序表称为二路归并。 假设我们有左右两块有序区间的数组可以对它直接进行合并。此时我们需要借助第三方数组一次比较两块区间的起始位置把小的那个放到新数组随后依次比较小的就放新数组一直到结束。 但是现在存在一个问题上述条件是假设了左半区间和右半区间有序但是原先数组是无序的也就是左半区间和右半区间均无序。怎么才能达到左半区间和右半区间有序最后再归并成整体有序呢这就体现到了分治的思想了将数组一直分分到1个1个的归并成有序变成2个2个的然后归并成有序成4个4个的最后再4个4个的归并成有序最终至整体有序。 画图解析其完整的归并过程 这里我们先用代码实现其分解递归的过程并用打印法表示其结果 画图演示其部分递归分治的过程 总代码如下 void _MergeSort(int* a, int begin, int end, int* tmp) {if (begin end)return; //区间不存在就返回int mid (begin end) / 2;//[begin, mid] [mid1, end]_MergeSort(a, begin, mid, tmp); //递归左半_MergeSort(a, mid 1, end, tmp); //递归右半//归并[begin, mid] [mid1, end]//printf(归并[%d,%d][%d,%d]\n, begin, mid, mid 1, end);int begin1 begin, end1 mid;int begin2 mid 1, end2 end;int index begin;while (begin1 end1 begin2 end2){//将较小的值放到tmp数组里头if (a[begin1] a[begin2]){tmp[index] a[begin1];}else{tmp[index] a[begin2];}}//如若begin2先走完把begin1后面的元素拷贝到新数组while (begin1 end1){tmp[index] a[begin1];}//如若begin1先走完把begin2后面的元素拷贝到新数组while (begin2 end2){tmp[index] a[begin2];}//归并结束后把tmp数组拷贝到原数组memcpy(a begin, tmp begin, (end - begin 1) * sizeof(int)); }//归并排序 void MergeSort(int* a, int n) {//malloc一块新数组int* tmp (int*)malloc(sizeof(int) * n);assert(tmp);_MergeSort(a, 0, n - 1, tmp);free(tmp); }归并排序非递归 思想 归并的非递归不需要借助栈直接使用循环即可。递归版中我们是对数组进行划分成最小单位这里非递归我们直接把它看成最小单位进行归并。我们可以通过控制间距gap来完成先看图 上述情况其实是在理想状态下可行的只要数组长度不是2的次方倍都会出现问题先简要看下理想状态下的伪代码并用printf打印下归并过程 再强调一遍只要数组长度不是2的次方倍都会出现问题像上述长度为8没有问题那如若长度为6呢 当长度为6不再是2的次方数时就运行出现问题了综上我们需要考虑下极端情况根据上述的区间范围我们可以总结出以下三个可能会出现越界的情况 end1越界。begin2越界。end2越界。 1、end2越界 2、begin2和end2均越界 3、end1和begin2和end2均越界 综上我们需要单独对这些极端情况处理。 //end1越界修正即可 if (end1 n) {end1 n - 1; } //begin2越界第二个区间不存在 if (begin2 n) {begin2 n;end2 n - 1; } //begin2 okend2越界修正下end2即可 if (begin2 n end2 n) {end2 n - 1; }总代码如下 //归并非递归 void MergeSortNonR(int* a, int n) {int* tmp (int*)malloc(sizeof(int) * n);assert(tmp);int gap 1;while (gap n){//分组归并间距为gap是一组两两归并for (int i 0; i n; i 2 * gap){int begin1 i, end1 i gap - 1;int begin2 i gap, end2 i 2 * gap - 1;//end1越界修正即可if (end1 n){end1 n - 1;}//begin2越界第二个区间不存在if (begin2 n){begin2 n;end2 n - 1;}//begin2 okend2越界修正下end2即可if (begin2 n end2 n){end2 n - 1;}printf(归并[%d,%d][%d,%d]\n, begin1, end1, begin2, end2);int index i;while (begin1 end1 begin2 end2){//将较小的值放到tmp数组里头if (a[begin1] a[begin2]){tmp[index] a[begin1];}else{tmp[index] a[begin2];}}//如若begin2先走完把begin1后面的元素拷贝到新数组while (begin1 end1){tmp[index] a[begin1];}//如若begin1先走完把begin2后面的元素拷贝到新数组while (begin2 end2){tmp[index] a[begin2];}}memcpy(a, tmp, n * sizeof(int));gap * 2;}free(tmp); }归并排序特性总结 1、归并的缺点在于需要O(N)的空间复杂度归并排序的思考更多的是解决在磁盘中的外排序问题。 2、时间复杂度O(N*logN)。 3、空间复杂度O(N)。 4、稳定性稳定 。 内排序和外排序 在排序中分为内排序和外排序简单了解下其概念 内排序数据量较少在内存中进行排序。外排序数据量很大在磁盘上进行排序。 而我们前面学习的排序中归并排序既可作为内排序也可作为外排序而其它几个排序只能是内排序这也就说明了在处理数据量很大时采用归并排序才能解决其它排序不可。 如若我要排10亿个整数就只能使用归并排序了现在来简要算下其占比大小 1G 1024MB1MB 1024KB1KB 1024Byte综上1G 102410241024Byte而10亿个整数40亿Byte所以10亿个整数占4G 现在有10亿个整数4G的文件只给你1G的运行内存请对文件中的10亿个数进行排序。 核心思想 数据量大加载不到内存。想办法控制两个有序文件两个有序文件归并成一个更大的有序文件。可以把这4G的文件分成4等份每一份1G分别读到内存进行归并排序排完后再写回到磁盘小文件。

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

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

相关文章

成都网站建设推荐安徽秒搜科技山西省建筑工程网

今天分享的AI系列深度研究报告:《AI聊天专题报告:ChatGPT全景图聊聊技术产品和未来》。 (报告出品方:LanguageX) 报告共计:22页 争论:ChatGPT算不算技术革命 回应吴军老师“ChatGPT不算新技术…

淘宝网站怎么做视频教程竞价广告推广

随着全球经济的逐步复苏,特别是科技行业的快速发展,芯片股作为科技板块的重要组成部分,在美股市场的表现尤为引人注目。近期,美股芯片股在盘前交易中持续走高,其中AMD的涨幅超过2%,ARM和英伟达也分别涨超1%…

网站推广工作职责做网站编程语言

Bug是指在程序或系统中存在的错误、缺陷或异常,是由于编码错误、设计问题、逻辑错误或其他因素导致的。 常见的Bug分类方法 功能性Bug与软件的功能有关,软件无法正常工作、功能与需求不符或功能执行不正确。 用户界面Bug与软件的用户界面有关&#xff…

防疫站24小时在线咨询东莞微信网站开发

[css] box-sizing常用的属性有哪些?分别有什么作用? box-sizing常用的属性有 content-box 和 border-box。content-box 盒子的宽度不包含 border和padding,border-box盒子的宽度包含border 和padding。个人简介 我是歌谣,欢迎和大…

建设网站怎样赚钱东阿网站建设

最近在做项目的时候,需要创建一个新的文件夹保存临时文件,但是很长时间都没有解决这个问题,今天终于解决了,拿出来和网友分享一下Qt中创建文件夹的方法。如下代码是在单击按钮后,先判断文件夹是否存在,若不…

贵州省建设监理协会官方网站力软敏捷开发框架可以做网站后台

B树面对的场景,是一个有10亿行的表,希望某一列是有序的。这么大的数据量,内存里放不下,需要放在硬盘里。结果,原本运行于内存的二叉树,就升级为B树了。 在二叉树中,每个节点存储着一个数字&…

四川手机响应式网站建设推荐怎么做网站跳转

编写程序,设计并实现如下功能:从键盘输入多个字符串,按升序输出各个字符串。

禅城网站建设企业二手网站建设

有时候我们的目录结构会重新刷新,但是default-active始终保持原来的下标 1.一开始我以为是我给定的属性或者值不对,后来经过一番排查发现根本不是 那我们该如何解决那? 方案1. 通过nextTick去重新赋值方案2. 重写赋值menu方案3. v2和v3都可以…

济南市城乡建设部网站首页桥头镇网站建设公司

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米,宽为12米&…

人网站建站优化网站性能监测

1 STL 的数值算法概述 STL 的数值算法提供了一系列用于处理数值计算的模板函数。这些算法主要针对容器中的元素进行数学运算和统计计算,使得程序员能够高效地处理数值数据。 STL 数值算法包括了一系列功能丰富的函数,例如 std::accumulate 用于计算容器…

网站后台版权河南城乡建设厅网站

单片机——中断 宗旨:技术的学习是有限的,分享的精神是无限的。 1、中断:放下手中的事情去处理另一种事情。 2、定时器中断 定时器是单片机模块的一个资源,确确实实存在的一个模块,中断是单片机的一种运行机制。不是一…

商城网站建设是 什么wordpress访问仪表盘

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《高效编程技巧》《C语言进阶》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言1.如何写出好的代码?1.2 如何分析一个函数写的怎么样 2. 代码板式的重要性2.1 代码…

怎样申请一个免费的网站空间易语言做购物网站

💻文章目录 📄前言🌺linux线程基础线程的概念线程的优缺点线程与进程的区别 线程的创建 🌻linux线程冲突概念互斥锁函数介绍加锁的缺点 📓总结 📄前言 无论你是否为程序员,相信多线程这个词汇应…

网站正在建设中 模板 下载360建筑网忘记登入密码了怎么办

前言 环境介绍: 1.编译环境 Ubuntu 18.04.5 LTS 2.SDK rk356x_linux 3.单板 迅为itop-3568开发板 自制底板 一、查看硬盘 插上硬盘上电,进入系统后通过命令lspci查看nvme硬盘识别情况 [rootRK356X:/]# lspci -k 21:00.0 Class 0108: 1e4b:1202…

做淘宝差不多的网站吗外贸网络推广平台

据小米方面介绍,小米手机认证空间帐号自2013年5月21日开通以来,框架,8mm加厚钢化玻璃,15mm防火板材质机壳3、在QQ空间发表日志的之后为什么总是显示“服务器繁忙”,发表不了日志?这个难题在我家电脑下终于存…

做网站的关键词怎么判断好不好wordpress中文显示成问号

面向对象 1.初识对象1.1理解使用对象完成数据组织的思路 2.成员方法2.1类的定义和使用语法2.2成员方法的使用 3.类和对象4.构造方法4.1使用构造方法向成员变量赋值 5.其他内置方法5.1__str__字符串方法5.2__lt__小于符号比较方法5.3__le__小于等于比较符号5.4__eq__比较运算符实…

沈阳城市建设学院官网网站医院网站建设思路

1.OSI 七层模型? OSI 七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 TCP/IP 五层模型:应用层、传输层、网络层、链路层、物理层 应用层 应用层是由网络应用程序使用的,是离用户最近的一层 应用层通过…

利用高权重网站做关键词网站内容策略

一篇博客读懂设计模式之---单例模式 一。 单例模式 单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处: 1、某些类创建比较频繁&…

重庆名威建设工程咨询有限公司网站做网站大概价格

目录 专栏导读 1 GUI 编程概述 1.1 为什么需要GUI? 1.2 常见的GUI编程工具和库 1.3 GUI应用程序的组成和架构 2 使用Tkinter 库 进行GUI编程 2.1 使用Tkinter库进行GUI编程的基本流程 2.2 使用Tkinter库进行GUI编程 2.2.1 导入Tkinter库 2.2.2 添加标签和…

设计师接私单做网站微信公众号推广链接

概述 Zephyr OS 是一个占用空间小的内核,用于资源受限的嵌入式系统:从简单的嵌入式环境传感器、LED 可穿戴设备到复杂的嵌入式控制器、智能手表和物联网无线应用。 Zephyr 内核支持多种架构,包括: ARCv2 (EM and HS) and ARCv3…