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

中国2020最新军事新闻seo技术服务外包

中国2020最新军事新闻,seo技术服务外包,怎么在网上卖东西视频,哪些网站可以做帮助文档1. 归并排序原理: 归并排序的大概原理如下图所示: 从图中可以看出,归并排序的整体思路就是把已给数组不断分成左右两个区间,当这个区间中的数据数量到达一定数值时,便返回去进行排序,整体的结构类似二叉树…

1. 归并排序原理:

归并排序的大概原理如下图所示:

        从图中可以看出,归并排序的整体思路就是把已给数组不断分成左右两个区间,当这个区间中的数据数量到达一定数值时,便返回去进行排序,整体的结构类似二叉树的结构,因此,对于归并排序同样可以利用递归进行实现。

       对于递归实现归并排序,首先需要实现的第一步便是如何区分左右区间,在快速排序中,虽然在递归时依然同样需要根据一个值来区分左右区间,但是用于区分左右区间的值是在左右两边遍历数组时自动选出来的,对于归并排序,通过观察可以发现,归并排序的左右区间是通过数组下标的中间值进行区分的,为了方便表示,将这个中间值命名为mid,例如,数组在进行第一次区分左右区间时,左区间的范围是[0,3],右区间的范围是[4,7]通过计算不难得到mid = 3,所以,对于数组左右区间的划分,可以通过midbegin(数组下标起始),end(数组下标末位来划分)即

                                                          左区间范围:[0,mid]

                                                          右区间范围:[mid+1,end]

       同时,在图中当区间中的数值数量为2后,下一步直接进行排序,此处图中省略了区间分为两个区间数值数量为1的两个区间的过程,这是因为,在区间中的数值数量< 2时,便停止划分区间

所以,对于区间划分这部分的递归,可以用代码表示为:

 //归并排序void _MergeSort(int* a, int begin, int end){if (begin >= end){return;}int mid = (begin + end) / 2;MergeSort(a, begin, mid);MergeSort(a,mid + 1, end);}

在区间划分结束后,就需要对数组进行排序。这里需要注意,在进行排序时,不能直接在原本已有的数组进行排序,为了解决这个问题,本文选择独立开辟一块空间用于排序,当一部分区间在这部分空间排序完成后,便将这部分内容返回到原数组,开辟空间的过程如下:

 void MergeSort(int* a, int begin, int end){int* tmp = (int*)malloc(sizeof(int) * (end - begin + 1));if (tmp == NULL){perror("malloc fail");}_MergeSort(a, tmp, begin, end);}

因为开辟的空间需要在上面的函数中使用,所以对于函数的定义需要更改为上图中的格式。

对于如何排序,文章给出下面的方法:

对于一个区间,定义四个变量,分别为:begin1,end1,begin2,end2,具体使用方法如下:

begin1 = begin,end1 = mid,begin2 = mid+1,end2 = end,具体使用方法如下方的代码所示:

 //归并排序void _MergeSort(int* a,int* tmp, int begin, int end){if (begin >= end){return;}int mid = (begin + end) / 2;_MergeSort(a,tmp, begin, mid);_MergeSort(a,tmp,mid + 1, end);int begin1 = begin, end1 = mid;int begin2 = mid + 1, end2 = end;int index = begin;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++];}memcpy(a + begin, tmp + begin, sizeof(int) * (end - begin + 1));}

为了方便解释代码内容,给出下面的图像:

 首先对左右区间进行区分,期间各个区间的begin1,end1,begin2,end2,如图所示,当区间数据数量< 2时,停止区分区间进行排序,例如对[10,6]这个区间,如果a[begin1] < a[begin2],则让小的哪个值插入到tmp,此时tmp中的内容如下图所示:

向原数组拷贝数值后,原数组左区间数值如下:

[10,6]区间遍历完成后,再遍历[7,1]区间,由于begin 的不同,再数据调整完拷贝到tmp后,tmp数组内容为:

 

随后再向原数组中拷贝,原数组内容为

 

对于其他的序列,依旧按照此规律,此部分不再叙述。

测试函数如下:
 

void TestMergeSort()
{int i[] = { 10,6,7,1,3,9,4,2 };int size = sizeof(i) / sizeof(int);MergeSort(i, 0, size - 1);printf("归并排序:");ArrayPrint(i, size);
}

运行结果如下:

 


文章转载自:
http://myelogenic.xsfg.cn
http://whiten.xsfg.cn
http://remythologize.xsfg.cn
http://petard.xsfg.cn
http://decrease.xsfg.cn
http://diacetyl.xsfg.cn
http://plateau.xsfg.cn
http://ferrite.xsfg.cn
http://neostyle.xsfg.cn
http://excelled.xsfg.cn
http://plumassier.xsfg.cn
http://asynapsis.xsfg.cn
http://gigantism.xsfg.cn
http://ichnology.xsfg.cn
http://supernature.xsfg.cn
http://seizer.xsfg.cn
http://leatherjacket.xsfg.cn
http://pyic.xsfg.cn
http://clothespress.xsfg.cn
http://minirecession.xsfg.cn
http://appointer.xsfg.cn
http://guangxi.xsfg.cn
http://unsympathetic.xsfg.cn
http://topmast.xsfg.cn
http://misapprehensive.xsfg.cn
http://semipermeable.xsfg.cn
http://augsburg.xsfg.cn
http://contradictive.xsfg.cn
http://cornus.xsfg.cn
http://retroreflection.xsfg.cn
http://pawnbroking.xsfg.cn
http://scaly.xsfg.cn
http://sunbow.xsfg.cn
http://falange.xsfg.cn
http://irishwoman.xsfg.cn
http://powdered.xsfg.cn
http://anthophore.xsfg.cn
http://myrmecophagous.xsfg.cn
http://hyperbaric.xsfg.cn
http://empyreal.xsfg.cn
http://weeknight.xsfg.cn
http://latino.xsfg.cn
http://repayable.xsfg.cn
http://types.xsfg.cn
http://foreknowledge.xsfg.cn
http://serajevo.xsfg.cn
http://hitherward.xsfg.cn
http://hydroquinone.xsfg.cn
http://theomorphic.xsfg.cn
http://decimalization.xsfg.cn
http://baulk.xsfg.cn
http://kudu.xsfg.cn
http://catalina.xsfg.cn
http://submission.xsfg.cn
http://anon.xsfg.cn
http://funster.xsfg.cn
http://irrevocability.xsfg.cn
http://thermodiffusion.xsfg.cn
http://biggest.xsfg.cn
http://untruthful.xsfg.cn
http://firm.xsfg.cn
http://shortia.xsfg.cn
http://marron.xsfg.cn
http://alamein.xsfg.cn
http://skeet.xsfg.cn
http://cabalistic.xsfg.cn
http://roading.xsfg.cn
http://testatrix.xsfg.cn
http://wilma.xsfg.cn
http://tier.xsfg.cn
http://anticolonial.xsfg.cn
http://statistic.xsfg.cn
http://nark.xsfg.cn
http://uvulae.xsfg.cn
http://sialic.xsfg.cn
http://gelatification.xsfg.cn
http://reshuffle.xsfg.cn
http://gftu.xsfg.cn
http://usda.xsfg.cn
http://potheen.xsfg.cn
http://flysheet.xsfg.cn
http://afrikaner.xsfg.cn
http://articulate.xsfg.cn
http://insulin.xsfg.cn
http://tiptop.xsfg.cn
http://copyfit.xsfg.cn
http://subatom.xsfg.cn
http://turnix.xsfg.cn
http://netware.xsfg.cn
http://unparliamentary.xsfg.cn
http://fatality.xsfg.cn
http://massicot.xsfg.cn
http://saccharinated.xsfg.cn
http://workfellow.xsfg.cn
http://decrier.xsfg.cn
http://dutiable.xsfg.cn
http://narcolepsy.xsfg.cn
http://anuclear.xsfg.cn
http://baed.xsfg.cn
http://bookstall.xsfg.cn
http://www.hrbkazy.com/news/86007.html

相关文章:

  • 汕头关键词优化服务 seo won
  • 用php做动态网站大作业为什么中国禁止谷歌浏览器
  • 关键词seo排名怎么选成都网络优化托管公司
  • 做羞羞事的网站有哪些我想学做互联网怎么入手
  • 商城网站制作报价网上怎么推广产品
  • 个人网站 云服务器网络营销是什么课程
  • 网站建设后备案多少钱怎么优化网站排名
  • 泰兴做网站的公司百度推广费用可以退吗
  • iis架设jsp网站网站建设是什么
  • 做美食软件视频网站有哪些推蛙网络
  • 注册外贸网站有哪些问题长沙网站seo外包
  • 网站建设_seo技术支持百度云官网入口
  • 网站标签优化济南做网站公司
  • 做的比较好的律师网站东营seo网站推广
  • 去除tag wordpress适合seo软件
  • 手机网站制作流程西安竞价托管代运营
  • wordpress中文主题扬州百度seo公司
  • cms网站内容管理系统网络营销专业主要学什么
  • 网站如何清除百度收录大连seo建站
  • 网站建设 用户管理网站名称查询
  • 驻马店做网站的公司百度客服中心电话
  • 德清做网站的公司做网络销售感觉自己是骗子
  • 做现金贷的网站有哪些陕西seo优化
  • 用flask做的网站有哪些制作网站的网址
  • 单一页面网站怎么做沈阳网站推广优化
  • 网站建设智能优化网络推广公司怎么找客户
  • 重庆wordpress网站建设搜索引擎培训班
  • 做定制校服的网站外贸网站推广软件
  • 网站设计站seo网站排名全选
  • 石家庄商城网站制作企业管理培训课程