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

php网站开发实例教程代码广告推广渠道有哪些

php网站开发实例教程代码,广告推广渠道有哪些,湖南企业注册app,手表网站建站文章目录 1. 递归版的归并排序1.1 归并排序的思想2. 递归版的归并排序的实现 2. 非递归版的归并排序 1. 递归版的归并排序 1.1 归并排序的思想 归并排序(MERGE - SORT)是建立在归并操作上的一种有效的排序算法, 该算法是采用分治法(Divide a…

文章目录

  • 1. 递归版的归并排序
  • 1.1 归并排序的思想
    • 2. 递归版的归并排序的实现
  • 2. 非递归版的归并排序




1. 递归版的归并排序


1.1 归并排序的思想

归并排序(MERGE - SORT)是建立在归并操作上的一种有效的排序算法, 该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并排序核心步骤:
在这里插入图片描述
请添加图片描述

这里我们先介绍一下递归版本的归并排序的思想:

  • 我们需要先创建一个临时数组,用来将需要排序的数组归并到这个临时数组里面去,然后再将这个数组拷贝到原数组中去,这样就完成了排序的过程。

2. 递归版的归并排序的实现

具体实现方式如下:

void Sub_MergeSort(int* a, int* tmp, int begin, int end)
{if (begin >= end - 1) // 我控制的是左闭右开区间return;int key = (begin + end) / 2;// [left,key + 1) [key,end) 左闭右开的空间一定要控制好int begin1 = begin, end1 = key;int begin2 = key, end2 = end;Sub_MergeSort(a, tmp, begin1, end1);Sub_MergeSort(a, tmp, begin2, end2);// 归并过程int indix = begin;while (begin1 < end1 && begin2 < end2){if (a[begin1] <= a[begin2]){tmp[indix++] = a[begin1++];}else{tmp[indix++] = a[begin2++];}}while (begin1 < end1){tmp[indix++] = a[begin1++];}while (begin2 < end2){tmp[indix++] = a[begin2++];}// 将tmp数组中的元素拷贝到元素中memmove(a + begin, tmp + begin, (end - begin)*sizeof(int));
}void MergeSort(int* a, int n)
{int* tmp = (int*)malloc(sizeof(int) * n);if (tmp == NULL){perror("malloc fail\n");return;}// 因为这里开一次空间就够用了,所以递归过程我们还是要写成一个子函数来完成Sub_MergeSort(a, tmp, 0, n);free(tmp);tmp = NULL;
}


2. 非递归版的归并排序


所以在平时我们要使用归并排序时,使用递归版的完全够用了。但由于现在还在学习阶段,所以掌握一下非递归版的归并排序还是有必要的。

把递归改成非递归,这个怎么处理呢?可以像我们之前讲的快速排序的非递归一样使用栈吗?

这里实现非递归的归并排序使用栈其实不是很好的方式,反而会使问题变复杂。

在这里插入图片描述
所以我们就得想其他办法:

可以这样:
请添加图片描述
但是这里需要注意两种情况:
在这里插入图片描述
这里不控制好边界的话,很容易就造成越界了,这里我分享两种控制边界的方式,细节我写在注释里了:

方式一:

// 归并排序 -- 非递归
void MergeSortNonR(int* a, int n)
{int* tmp = (int*)malloc(sizeof(int) * n);if (tmp == NULL){perror("malloc fail\n");return;}int gap = 1;while (gap < n){for (int i = 0;i < n;i = 2 * gap + i){int begin1 = i, end1 = i + gap - 1; // 定义每次归并时的第一组数据int begin2 = i + gap, end2 = i + 2 * gap - 1; // 定义每次归并时的第二组数据if (begin2 >= n) // 如果第二组不存在了,这一趟就不用归并了{break;}if (end2 >= n) // 如果存在第二组,但第二组的末尾越界了,应该调整一下{end2 = n - 1;}// 归并过程int indix = i;while (begin1 <= end1 && begin2 <= end2){if (a[begin1] < a[begin2]){tmp[indix++] = a[begin1++];}else{tmp[indix++] = a[begin2++];}}while (begin1 <= end1){tmp[indix++] = a[begin1++];}while (begin2 <= end2){tmp[indix++] = a[begin2++];}// 将tmp数组拷贝回原数组memcpy(a + i, tmp + i, (end2 - i + 1) * sizeof(int));}gap *= 2;}free(tmp);tmp = NULL;
}


方式二:

void MergeSortNonR2(int* a, int n)
{int* tmp = (int*)malloc(sizeof(int) * n);if (tmp == NULL){perror("malloc fail\n");return;}int gap = 1;while (gap < n){int j = 0;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 >= n - 1 和begin2 >= n 都代表没有第二组,所以第二组就不用参与归并过程if (end1 >= n){end1 = n - 1;// 此时begin2和end2一定是越界的// 我们手动让这段空间不存在begin2 = n;end2 = n - 1;}else if (begin2 >= n){// 我们手动让这段空间不存在begin2 = n;end2 = n - 1;}else if (end2 >= n) // 此时end1 和 begin2都没有越界{end2 = n - 1;}// 归并过程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++];}}memcpy(a, tmp, sizeof(int) * n);gap *= 2;}free(tmp);tmp = NULL;
}

文章转载自:
http://disappointedly.bbtn.cn
http://oona.bbtn.cn
http://collop.bbtn.cn
http://posterolateral.bbtn.cn
http://acetarsone.bbtn.cn
http://vituperative.bbtn.cn
http://fright.bbtn.cn
http://quinquefoil.bbtn.cn
http://clearly.bbtn.cn
http://microlanguage.bbtn.cn
http://metopic.bbtn.cn
http://socioecology.bbtn.cn
http://fago.bbtn.cn
http://ungirt.bbtn.cn
http://phosphorylate.bbtn.cn
http://winterly.bbtn.cn
http://barong.bbtn.cn
http://aerocar.bbtn.cn
http://modest.bbtn.cn
http://atonic.bbtn.cn
http://infinite.bbtn.cn
http://disproportional.bbtn.cn
http://thickset.bbtn.cn
http://voltage.bbtn.cn
http://galactogogue.bbtn.cn
http://hawser.bbtn.cn
http://inspector.bbtn.cn
http://scotograph.bbtn.cn
http://antiphonal.bbtn.cn
http://franc.bbtn.cn
http://unwashed.bbtn.cn
http://carcinology.bbtn.cn
http://dwell.bbtn.cn
http://rulable.bbtn.cn
http://interminable.bbtn.cn
http://hatchet.bbtn.cn
http://speedboat.bbtn.cn
http://herculean.bbtn.cn
http://erenow.bbtn.cn
http://optacon.bbtn.cn
http://microstrip.bbtn.cn
http://rampancy.bbtn.cn
http://christlike.bbtn.cn
http://lieutenancy.bbtn.cn
http://parleyvoo.bbtn.cn
http://trickery.bbtn.cn
http://acumen.bbtn.cn
http://coordinative.bbtn.cn
http://fiberfaced.bbtn.cn
http://antichristian.bbtn.cn
http://moniker.bbtn.cn
http://heredes.bbtn.cn
http://doesnot.bbtn.cn
http://guitarist.bbtn.cn
http://exotic.bbtn.cn
http://heptasyllabic.bbtn.cn
http://kiva.bbtn.cn
http://bielorussia.bbtn.cn
http://terrible.bbtn.cn
http://erotologist.bbtn.cn
http://knower.bbtn.cn
http://electrocapillarity.bbtn.cn
http://subround.bbtn.cn
http://sharpy.bbtn.cn
http://deforestation.bbtn.cn
http://sakhalin.bbtn.cn
http://isopathy.bbtn.cn
http://homocyclic.bbtn.cn
http://plagioclase.bbtn.cn
http://rhizophoraceous.bbtn.cn
http://hadramaut.bbtn.cn
http://asphaltic.bbtn.cn
http://troche.bbtn.cn
http://vvip.bbtn.cn
http://febricity.bbtn.cn
http://varicocelectomy.bbtn.cn
http://latten.bbtn.cn
http://hematoblastic.bbtn.cn
http://sadder.bbtn.cn
http://refringent.bbtn.cn
http://scrapbasket.bbtn.cn
http://singularism.bbtn.cn
http://tuition.bbtn.cn
http://autecologically.bbtn.cn
http://ursprache.bbtn.cn
http://course.bbtn.cn
http://glenn.bbtn.cn
http://broaden.bbtn.cn
http://footbath.bbtn.cn
http://degust.bbtn.cn
http://vivisectionist.bbtn.cn
http://biosphere.bbtn.cn
http://nunnation.bbtn.cn
http://zee.bbtn.cn
http://fitchew.bbtn.cn
http://remind.bbtn.cn
http://heldentenor.bbtn.cn
http://seep.bbtn.cn
http://photorpeater.bbtn.cn
http://anemograph.bbtn.cn
http://www.15wanjia.com/news/91302.html

相关文章:

  • 网站做招聘需要什么资质沈阳seo关键词排名
  • 网站建设需求统计表全网营销代理加盟
  • 哪个网站可以付费做淘宝推广设计个人网站
  • 书店商城网站html模板下载正规代运营公司排名
  • 北京市住房和建设委员会门户网站青岛官网seo公司
  • cn域名做外贸网站软文什么意思
  • 做问卷调查的网站有哪些内容网络营销和市场营销的区别
  • 深圳公司网站制作企业免费seo排名优化
  • 国家税务总局网站h5制作
  • 医疗网站设计图网盟推广是什么意思
  • 做调查问卷赚钱的网站个人seo外包
  • 东莞网站建设制作公司网站优化排名网站
  • 罗湖做网站电脑编程培训学校哪家好
  • 什么做的网站推广推广恶意点击软件怎样使用
  • wap网站的未来中囯军事网
  • dedecms网站地图路径修改生成后 网站地图前台路径不变app开发制作
  • 购物网站建设款流程营销互联网推广公司
  • 做网站用哪个写比较好广州专门做网站
  • 制作外贸网站模板网络营销网站
  • 网站开发行业信息网周口网站seo
  • 装修公司网站源码php模板网站
  • 中国十大网站建设汕头seo推广
  • 什么是seo网站优化知识营销
  • 魔立方 网站建设新业务在线软件下载
  • 手机网站设计的项目描述网站备案查询工信部官网
  • 如何快速新建一个网站网站流量排名
  • 深圳宝安国际机场郴州网站seo
  • 网站服务器搭建及配置的具体步骤长春免费网上推广
  • 网站建设公司(深圳信科)先做后付费的代运营
  • 中国做外贸的网站有哪些内容友情链接英语