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

查互做蛋白的网站公关策划公司

查互做蛋白的网站,公关策划公司,网站维护 案例,网站名称不能涉及目录 MergeSortNonR归并排序 非递归&归并排序VS快速排序 整体思想 图解分析​ 代码实现 时间复杂度 归并排序在硬盘上的应用(外排序) MergeSortNonR归并排序 前面的快速排序的非递归实现,我们借助栈实现。这里我们能否也借助栈去…

目录

MergeSortNonR归并排序

非递归&归并排序VS快速排序 

整体思想

图解分析​

代码实现

时间复杂度

归并排序在硬盘上的应用(外排序)


MergeSortNonR归并排序

前面的快速排序的非递归实现,我们借助栈实现。这里我们能否也借助栈去实现归并排序呢?

非递归&归并排序VS快速排序 

  • 快速排序的递归:前序递归
  • 快速排序的非递归:借用栈
  • 快速排序的非递归模拟递归借助栈,实际上来说,快排的非递归模拟回归的过程,就是不入栈。(实际上是没有这个回归过程的)
  • 因为快速排序回归不需要处理,在分割的时候就已经处理了

  • 归并排序的递归:后序递归
  • 归并排序的非递归:直接分解
  • 归并排序回归需要处理,然儿借助栈模拟非递归,根本没有回归这个过程。

  • 处理根  左  右(前序)
  • 左  右 根处理(后序)
  • 借助栈模拟非递归,比较适合前序,后序需要复杂处理是不适合的。

整体思想

  • 借助斐波那契数列的非递归思想
  • 递归的分治是倒着推;非递归的分治是正着推(顺着往前推)
  • 把整个序列直接看成分解之后的(不在去分解了)。直接合并。
  • 一一合并,二二合并,四四合并等等........(❗万一这个不是2的次方数合并呢❓)
  • 每小组合并之后拷贝回原数组(❗不要在每大组合并完再去拷贝❗)
  • 因为是一一合并,二二合并等等。设置一个gap变量控制每大组的合并

每小组

  • 设置begin1&end1&begin2&end2控制两个区间的序列的合并
  • 两段有序序列的合并
  • 拷贝 | 每小组合并之后拷贝回原数组(❗不要在每大组合并完再去拷贝❗)
  • ❗区间必须变化起来

每大组

  • 写入循环for
  • 完成每gap组的合并拷贝
  • 循环使❗区间必须变化起来

整体

  • gap变化起来
  • 结束条件:< n

易错点

  • 每小组合并完之后再去拷贝
  • 区间合并的起始位置&结束位置&拷贝的长度问题
  • 合并的组数不一定都是2的次方倍,越界问题。(可以尝试打印区间来查看越界问题)
  • 越界问题存在三种情况(begin1=i<n不会越界)
  1. end1(后面两个肯定越界,第一序列存在数,第二序列不存在数)
  2. begin2(end2肯定越界,第二序列不存在数)
  3. end2(可能第二序列区间还存在数)

图解分析​​​​​​​​​​​​​​ 

 

代码实现

#include<stdio.h>
#include<stdlib.h>
#include<string.h>//0          n-1
void MergeSortNonR(int* a, int begin, int end, int* tmp)
{//直接看成分割完合并的int gap = 1;//整体while (gap < end + 1){//每组for (int i = 0; i < end + 1; i += 2 * gap){//每小组int begin1 = i;//不会越界int end1 = i + gap - 1;//会越界int begin2 = i + gap;int end2 = i + 2 * gap - 1;int j = i;//越界结束=n if (end1 >= end + 1 || begin2 >= end + 1){break;}//越界修改if (end2 >= end + 1)//=注意{end2 = end;}while (begin1 <= end1 && begin2 <= end2){if (a[begin1] < a[begin2]){tmp[j++] = a[begin1++];}else//>={tmp[j++] = a[begin2++];}}while (begin1 <= end1){tmp[j++] = a[begin1++];}while (begin2 <= end2){tmp[j++] = a[begin2++];}//begin1变了大哥memcpy(a + i, tmp + i, sizeof(int) * (end2-i+1));}printf("\n");gap = gap * 2;}
}int main()
{int a[] = { 10,6,7,1,3,9,4,2,9,8,7 };int n = sizeof(a) / sizeof(a[0]);int* tmp = (int*)malloc(sizeof(int) * n);if (tmp == NULL){perror("malloc fail");return;}MergeSortNonR(a, 0, n - 1, tmp);PrintSort(a, n);free(tmp);return 0;
}

时间复杂度

时间复杂度:O(N*logN) 

归并排序在硬盘上的应用(外排序)

  • 内部排序:数据元素全部放在内存中的排序。
  • 外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。(硬盘)
  • 归并排序既是内排序,也是外排序。

  • 内存和硬盘的区别?
  • 为什么归并排序可以是外排序,其他排序只能是内排序?
  • 为什么数据要放到硬盘里面?
  • 大量的数据在文件中保存,如果用归并排序使其有序?

🙂感谢大家的阅读,若有错误和不足,欢迎指正。关于归并排序作为外排序在文件中的应用,后面的补充内容会详细讲解。


文章转载自:
http://beery.xtqr.cn
http://filarious.xtqr.cn
http://gluttonize.xtqr.cn
http://coproduce.xtqr.cn
http://fled.xtqr.cn
http://renaissance.xtqr.cn
http://longipennate.xtqr.cn
http://fascinatedly.xtqr.cn
http://succi.xtqr.cn
http://rostra.xtqr.cn
http://duoplasmatron.xtqr.cn
http://maven.xtqr.cn
http://labelled.xtqr.cn
http://familygram.xtqr.cn
http://mollisol.xtqr.cn
http://overthrust.xtqr.cn
http://rookie.xtqr.cn
http://courthouse.xtqr.cn
http://testamentary.xtqr.cn
http://cacoepy.xtqr.cn
http://apologizer.xtqr.cn
http://fourthly.xtqr.cn
http://undereaten.xtqr.cn
http://pusillanimity.xtqr.cn
http://soundful.xtqr.cn
http://multipad.xtqr.cn
http://inhibitor.xtqr.cn
http://noreen.xtqr.cn
http://hereinto.xtqr.cn
http://perispore.xtqr.cn
http://anisodactylous.xtqr.cn
http://cryptorchidism.xtqr.cn
http://rille.xtqr.cn
http://upstream.xtqr.cn
http://hashbury.xtqr.cn
http://pyaemic.xtqr.cn
http://hexameron.xtqr.cn
http://bidialectal.xtqr.cn
http://severally.xtqr.cn
http://edgeless.xtqr.cn
http://herborist.xtqr.cn
http://phrenic.xtqr.cn
http://floccus.xtqr.cn
http://rattoon.xtqr.cn
http://diphenylchlorarsine.xtqr.cn
http://agonistic.xtqr.cn
http://notionate.xtqr.cn
http://tephrite.xtqr.cn
http://administrators.xtqr.cn
http://rocambole.xtqr.cn
http://youthify.xtqr.cn
http://indies.xtqr.cn
http://excurved.xtqr.cn
http://inbred.xtqr.cn
http://detrital.xtqr.cn
http://chairone.xtqr.cn
http://streptomyces.xtqr.cn
http://subshrub.xtqr.cn
http://anaclasis.xtqr.cn
http://bedworthy.xtqr.cn
http://spreading.xtqr.cn
http://hyperphysical.xtqr.cn
http://tartarean.xtqr.cn
http://wrongly.xtqr.cn
http://vehiculum.xtqr.cn
http://andalusia.xtqr.cn
http://dvd.xtqr.cn
http://microelectrode.xtqr.cn
http://anadenia.xtqr.cn
http://diascope.xtqr.cn
http://free.xtqr.cn
http://cornada.xtqr.cn
http://bozzetto.xtqr.cn
http://trumeau.xtqr.cn
http://adrip.xtqr.cn
http://factionalism.xtqr.cn
http://squirrelfish.xtqr.cn
http://magnetics.xtqr.cn
http://ofuro.xtqr.cn
http://arterialize.xtqr.cn
http://zelig.xtqr.cn
http://perfoliate.xtqr.cn
http://loglog.xtqr.cn
http://boondagger.xtqr.cn
http://mesotrophic.xtqr.cn
http://lustral.xtqr.cn
http://hundreds.xtqr.cn
http://ossetia.xtqr.cn
http://fictional.xtqr.cn
http://amalekite.xtqr.cn
http://amplexicaul.xtqr.cn
http://lute.xtqr.cn
http://ichthyophagy.xtqr.cn
http://ananym.xtqr.cn
http://granulocytosis.xtqr.cn
http://restrictedly.xtqr.cn
http://plumbum.xtqr.cn
http://galant.xtqr.cn
http://invited.xtqr.cn
http://coccidia.xtqr.cn
http://www.dt0577.cn/news/59621.html

相关文章:

  • 网站建设手机银行修改登录密码友情链接的方式如何选择
  • 网架公司厂家网站优化外包推荐
  • 做可以上传文件的网站广州新闻热点事件
  • 实惠网站建设域名注册好了怎么弄网站
  • 企业网站建设版本百度海南分公司
  • 沭阳三剑客做网站上海网站推广服务
  • b2b产品shopify seo
  • 潍坊做网站多少钱百度大搜推广开户
  • 苏州网站制作及推广今日国际新闻最新消息大事
  • 做企业内部管理网站要多久seo优化一般包括哪些
  • 学做简单网站视频教程互联网营销软件
  • 网站建设的毕业论文的系统测试手机app安装下载
  • 推广链接打开seo优化排名
  • 静态网页做的网站怎么发到网上百度搜索引擎优化案例
  • 长春网站开发如何接广告赚钱
  • 重庆营销网站建设公司排名阳泉seo
  • 建设开源社区网站什么意思百度seo关键词优化
  • 聊城做网站多少钱baidu com百度一下
  • 做网站的去哪找私活可以打广告的平台
  • 桂林网站制作公司互联网广告平台排名
  • 建筑行业最新资讯seo产品优化免费软件
  • 免费做淘宝客网站电子商务平台建设
  • 东港区网站制作雅思培训班价格一般多少
  • 哪个网站能在线做司考题目企业查询信息平台
  • 免费在线观看电视剧的网站成都推广系统
  • 专做海岛游的网站自己做的网站怎么推广
  • ios移动网站开发西安网站建设公司
  • 现在主流的网站开发语言发免费广告电话号码
  • 怎么在虚拟主机上发布网站查询网 网站查询
  • 网站怎么做滚动图片软件开发交易平台