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

怎么建立自己的网站平台多少钱重庆外贸网站建设公司

怎么建立自己的网站平台多少钱,重庆外贸网站建设公司,网站psd模板,电商网站运营方案一,引言 归并排序通常使用递归的方式进行实现,但是当数据过于极端,或者数据量大或者特殊时,可能回出现栈溢出的风险,因此本文为了解决这个问题,来进行讲解归并排序的非递归的逻辑思想以及代码实现。 二&a…

一,引言

归并排序通常使用递归的方式进行实现,但是当数据过于极端,或者数据量大或者特殊时,可能回出现栈溢出的风险,因此本文为了解决这个问题,来进行讲解归并排序的非递归的逻辑思想以及代码实现。

二,逻辑讲解

首先来看一组动图:
 

在递归的逻辑中,通过一次次递归,直到最小分组之后进行排序。而非递归的思路是:我们可不可以先按照最小分组进行比较,之后逐步扩大分组,以便于达到相同的目的。 

第一次排序:
通过一个变量进行控制每组的个数,从一开始,代表每一组只有一个数据,之后亮亮进行比较,

直到该数组比较结束。如图:

红色的两组进行两两比较,使其变成升序,如图:
 

第二步:

使每组个数提高一倍,再次进行分组如图:
 

再次两两比较进行升序排序。如图:
 

第三步:
 再次扩大每组个数,增大一倍进行分组:

这两组继续进行升序排序,两两比较,进行排序。当单组个数大于等于总个数时排序结束。

单趟排序逻辑:
首先需要新开辟一个数组和原数组大小一样的空间,之后,两组的数值进行依次比较,依次拷贝到新开辟的数值中,拷贝结束后,将新数组的值拷贝回原数组。单趟排序结束。

以第三步为例,如图:

全部拷贝结束,将新数组的值拷贝回原数组。至此排序结束。

三,代码实现

void MergeNo_Re(int* p, int* q, int left, int right)
{for (int gap=1; gap <= right; gap = gap * 2){for (int begin1 = 0; begin1 <= right; begin1 ){int begin = begin1;int tag = begin1;int end1 = begin1 + gap - 1;int begin2 = begin1 + gap;int end2 = begin1 + 2 * gap - 1;int end = end2;if (begin2 > right){break;}if (end2 >= right){end2 = right;end = end2;}while (begin1 <= end1 && begin2 <= end2){if (p[begin1] < p[begin2]){q[tag] = p[begin1];begin1++;}else{q[tag] = p[begin2];begin2++;}tag++;}while (begin2 <= end2){q[tag] = p[begin2];begin2++;tag++;}while (begin1 <= end1){q[tag] = p[begin1];begin1++;tag++;}memcpy(p + begin, q + begin, (end - begin + 1) * sizeof(int));begin1 = begin + 2 * gap;}}
}

 后面三个while循环的进行单个比较拷贝,第二个for循环进行,两两组的比较,在每组个数一定的情况下,使得该数组的全部组数都比较完毕。第一个for循环进行每组个数的控制,依次翻倍处理。

注意事项:
1,首先传参第一个的原数组的地址,第二个是新数组的地址,第三个是该数组的头位置,第四个是该数组的尾位置。

2,注意第一个for循环的判断结束条件,只要小于个数就要继续进行比较。

3,第二个for循环中,如果两两比较,出现没有第二组和第一组比较的情况,就不需要进行比较了,若第二组的数组已经小于尾部的位置,那么需要将第二组数据控制尾部的变量进行再次赋值,以防止数据越界。

4,在最后的memcpy的函数中,要提前标记相比较的两组的首位位置,以防止在最后的拷贝过程中找不到相对位置。

四,总结

归并非递归排序的思想比较抽象,需要同学们多多思考,多多练习,才能熟练掌握,有任何问题评论区进行留言。

 

http://www.dtcms.com/wzjs/576669.html

相关文章:

  • 桓台新城建设有限公司网站互联网产品设计公司
  • 西安 做网站网站设计 案例
  • 网站建设中的策略网站运营与推广计划书怎么做
  • 网站图片布局wordpress主题购物
  • 金种子酒业网站建设中国建设银行网站签名通下载
  • 如何制作自己的网站wordpress的样式表
  • 销售网站怎么做的树立网站风格的步骤
  • dw建设网站视频seo网站首页推广
  • 蔬菜网站建设域名注册网站推荐
  • php网站开发职责网络策划案
  • 建设工程人员押证在哪个网站查深圳效果图制作
  • 网站建设都有什么类型有没人做阿里巴巴网站维护的
  • 西装定制在线网站seo优化
  • 哈尔滨房地产型网站建设装修公司报价明细表范本
  • 网站开发文档总结优化网站seo
  • 上海最新政策seo百度首页排名业务
  • 手机网站教程如何解析到凡科建设的网站
  • jqueryui做的网站团建网站建设
  • 网站建设html5模板服装设计就业前景如何
  • 彩票网站制作开发wordpress安装谷歌分析代码
  • 淮上网站建设成都工程建设信息网站
  • 梧州建设厅官方网站南丰网站建设
  • 深圳做网站公司有哪些一个完整的项目策划书
  • 网站备案的用户名是什么iis7.5 部署网站
  • 网站的备案许可号不存在建设手机网站设计
  • 郑州网站设计公司排名推广平台哪儿有怎么做
  • 国家城乡和住房建设部网站wordpress 覆盖原始图片对比效果
  • 做高仿网站有哪些蚌埠市重点工程建设管理局网站
  • 公司做网站友联互换
  • 怎么在国外网站赚钱设计官网登录入口