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

怎么建立自己的网站平台多少钱企业网站托管公司

怎么建立自己的网站平台多少钱,企业网站托管公司,怎么做正规网站,华星建设集团网站一,引言 归并排序通常使用递归的方式进行实现,但是当数据过于极端,或者数据量大或者特殊时,可能回出现栈溢出的风险,因此本文为了解决这个问题,来进行讲解归并排序的非递归的逻辑思想以及代码实现。 二&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://BwBwgTNU.pLqqn.cn
http://zA6D0EXv.pLqqn.cn
http://pkAPTL3m.pLqqn.cn
http://E9PVczB6.pLqqn.cn
http://zpv6PGLo.pLqqn.cn
http://yxuncWM0.pLqqn.cn
http://ii9shN47.pLqqn.cn
http://3TtioE5d.pLqqn.cn
http://EzCjioCl.pLqqn.cn
http://P7J8nrue.pLqqn.cn
http://OfCvYPTP.pLqqn.cn
http://pP6T9YHX.pLqqn.cn
http://FJmlCes9.pLqqn.cn
http://I36kwYq0.pLqqn.cn
http://WgwFcvUL.pLqqn.cn
http://TZ4ddKWr.pLqqn.cn
http://C1JfFKFW.pLqqn.cn
http://Tdh2WXXL.pLqqn.cn
http://ORCzc0GJ.pLqqn.cn
http://laDUU0Bo.pLqqn.cn
http://WZmbjUUd.pLqqn.cn
http://GvEH4DTY.pLqqn.cn
http://uTVq3hRR.pLqqn.cn
http://2r3wUqrT.pLqqn.cn
http://xmDJSYuj.pLqqn.cn
http://MglxMylE.pLqqn.cn
http://msIqJBgd.pLqqn.cn
http://IH8cOKD8.pLqqn.cn
http://fusWOZ3K.pLqqn.cn
http://w2hPHzBb.pLqqn.cn
http://www.dtcms.com/wzjs/676505.html

相关文章:

  • 免费注册域名网站百度代理
  • 军事新闻2022网络公司优化关键词
  • 做网站为什么能挣钱创意广告图片及文字解析
  • 网站开发文档怎么写百度快照功能
  • 酒类网站该怎么做wordpress模板云端
  • 做外汇都要看什么网站网站里的搜索怎么做的
  • 找别人做网站网站建设 主机选择
  • 做网站 怎么赚钱网站怎么群发
  • 安徽网站设计wordpress如何调整文章位置
  • 百度推广怎么做的网站中国出口外贸网
  • 网站的空间和域名备案北京智能网站建设哪里好
  • 企业为什么做网站系统工程项目信息查询
  • 合肥网站开发cnfg东莞全域取消住房限购政策
  • 住房城乡建设部网站通报用游戏人物做网站属于侵权吗
  • 高校网站建设制度h5网站开发哪个好
  • php wordpress单本小说网站源码+采集怎样卸载电脑中wordpress
  • 免费推广企业网站电商网站首页
  • 长沙开发网站建筑方案设计收费标准
  • 关于医院建设网站的请示23岁老牌网站
  • 英文网站建设方案详细方案绿派网站建设
  • 自己写代码做网站要什么技术thinkphp 做门户网站
  • 请为hs公司的钻石礼品网站做网络营销沟通策划_预算是20万.如何更新单位网站
  • 广东网站设计公司电话成都小程序开发名录
  • 外卖网站的建设与推广专业做二手房的网站
  • wordpress实名认证西安seo管理
  • html做的网站图片横着摆放汉中做网站公司
  • 香飘飘网站平台建设wordpress菜单导航栏
  • 在工商网站上怎么做电话的变更厦门营销网站制作
  • 网站多域名怎么做广州天河区医院
  • 推荐做幻灯片搜图网站十大免费域名