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

proxy网站网络营销是网上销售吗

proxy网站,网络营销是网上销售吗,图片设计软件有哪些,做简历的网站都有哪些内容👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:数据结构 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

在这里插入图片描述

👦个人主页:Weraphael
✍🏻作者简介:目前正在学习c++和算法
✈️专栏:数据结构
🐋 希望大家多多支持,咱一起进步!😁
如果文章有啥瑕疵
希望大佬指点一二
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍


目录

  • 一、希尔排序的由来
  • 二、算法思路
  • 三、预排序代码实现
  • 四、如何选择gap
  • 五、代码实现(完整版)
  • 六、性能分析

一、希尔排序的由来

  • 从直接插入排序中,我们总结了:(假定要求升序)当原数组是逆序的时候,时间复杂度为O(N2),效率极低。博客地址:点击跳转
  • 当原数组是接近升序或者已经是有序的,那么时间复杂度就是O(N),此时效率最高。

因此,又一位名叫希尔的大佬发现,如果一开始就让数组内的元素接近有序的话,那插入排序的效率不就大大提升了吗?所以,希尔排序是插入排序的优化

二、算法思路

  1. 预排序首先让序列中的元素接近有序

那么如何进行预排序呢?(重点)

其运用了 分组插排 的思想:定义一个变量gap,间隔为gap分为一组进行插入排序

  1. 最后再对数组进行插入排序即可

【画图演示】

在这里插入图片描述

通过以上图片,我们还可以总结一个规律:gap为几,就代表预排序有几组

接下来我们简单实现预排序的代码。

三、预排序代码实现

void ShellSort(int a[], int n)
{// 假设gap为3int gap = 3;// 1. gap是几,就代表有几组for (int i = 0; i < gap; i++){// 2. 间隔为gap为一组进行插入排序for (int j = i; j < n - gap; j += gap){// 下面基本都是插入排序的代码(类似)int end = j;int temp = a[j + gap];while (end >= 0){if (temp < a[end]){a[end + gap] = a[end];end -= gap;}else{a[end + gap] = temp;}}a[end + gap] = temp;}}
}

那么最后就要对整体进行插入排序,这样就能完美实现希尔排序了。但是我们难道还要重新再其后再手搓一个插入排序吗?理论上是可以的,但是没必要。注意看:当间隔gap1时,不就是插入排序了吗?因此,普通插入排序和gap是有关系的。那么应该如何选择gap呢?

四、如何选择gap

gap越大,跳的越快,越不接近有序;gap越小,跳的越慢,越接近有序。

可以为大家验证一下:

  • gap = 3

在这里插入图片描述

是不是越接近有序!

  • gap = 5

在这里插入图片描述

虽然也接近有序,但是没有比gap = 3更接近有序!

那么gap到底取多少合适呢?

解答:gap应该要不断在变化。为什么呢?开头的结论:gap越大,跳的越快,越不接近有序;gap越小,跳的越慢,越接近有序。如果gap是固定大小,给大了越不接近有序,给小了接近有序,但是跳的慢。因此,预排序的为了让更大的数更快的跳到后面,越小数越快跳到前面。这就是为什么gap应该要不断的变化。

  • 最初希尔大佬提出取gap /= 2,为什么呢?因为一个数不断/2,最后的结果一定为1,那么在上面我们说过,当gap = 1,就可以满足整体的插入排序,就不需要再手搓普通插入排序了。

  • 后来Knuth提出取gap = gap / 3 + 1+1为了保证最后gap一定为1,还有人提出取奇数好,也有人提出gap互质好。但无论哪一种主张都没有得到证明。其实都是ok的

五、代码实现(完整版)

void ShellSort(int a[], int n)
{// 3. 如何取gap// gap最大可以取到整个数组的长度nint gap = n;while (gap > 1){// gap = gap / 3 + 1; // 这也是okk的gap /= 2;//  1. gap是几,就代表有几组for (int i = 0; i < gap; i++){// 2. 间隔为gap为一组进行插入排序for (int j = i; j < n - gap; j += gap){int end = j;int temp = a[j + gap];while (end >= 0){if (temp < a[end]){a[end + gap] = a[end];end -= gap;}else{break;}}a[end + gap] = temp;}}}
}

【结果展示】

在这里插入图片描述

六、性能分析

  • 时间复杂度

希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算。Knuth大佬进行了大量的试验统计,计算出希尔排序的时间复杂度大约为O(N^1.3)

但是我们可以用代码进行性能测试的对比

在这里插入图片描述

如图,当数据个数是10w时,插入排序和希尔排序时间效率如下所示

在这里插入图片描述

由此看出,希尔排序还是非常的牛逼的~

  • 有人想:希尔排序在预排序的时候不是运用到很多的插入排序,为什么其效率还是比插入排序高?

原因是:其实gap的取值决定数组内的元素是否接近有序,gap越大,排的也越快,但越不接近有序;gap越小,排的也就越慢,但越接近有序。所以一开始gap的值可以设为数组元素个数(gap一定不可能超过数组元素个数),每次进行/2,不断缩小gap,其实最后发现,希尔排序的插入排序的次数其实是小于直接排序的插入次数的。


文章转载自:
http://vic.spkw.cn
http://embarrassingly.spkw.cn
http://biometricist.spkw.cn
http://keyless.spkw.cn
http://tilestone.spkw.cn
http://condemnable.spkw.cn
http://bedad.spkw.cn
http://gibeon.spkw.cn
http://accelerogram.spkw.cn
http://immutability.spkw.cn
http://decad.spkw.cn
http://impairer.spkw.cn
http://commune.spkw.cn
http://vitaphone.spkw.cn
http://pyrometamorphism.spkw.cn
http://forewarn.spkw.cn
http://impendence.spkw.cn
http://cummin.spkw.cn
http://hectolitre.spkw.cn
http://yearningly.spkw.cn
http://slovakian.spkw.cn
http://nabam.spkw.cn
http://mephistopheles.spkw.cn
http://anonymuncule.spkw.cn
http://rsj.spkw.cn
http://arith.spkw.cn
http://drivable.spkw.cn
http://axolotl.spkw.cn
http://diabase.spkw.cn
http://sunlit.spkw.cn
http://upbreed.spkw.cn
http://depose.spkw.cn
http://stodgy.spkw.cn
http://forasmuch.spkw.cn
http://puddinghead.spkw.cn
http://jig.spkw.cn
http://microlite.spkw.cn
http://readably.spkw.cn
http://alkalinize.spkw.cn
http://lippes.spkw.cn
http://agglutinability.spkw.cn
http://bivariate.spkw.cn
http://opac.spkw.cn
http://precipitinogen.spkw.cn
http://bail.spkw.cn
http://eyry.spkw.cn
http://uncalculating.spkw.cn
http://mutator.spkw.cn
http://mitral.spkw.cn
http://salvar.spkw.cn
http://foreordain.spkw.cn
http://talisman.spkw.cn
http://coastwaiter.spkw.cn
http://catechism.spkw.cn
http://ormuz.spkw.cn
http://fifths.spkw.cn
http://pronged.spkw.cn
http://afterword.spkw.cn
http://lubra.spkw.cn
http://nornicotine.spkw.cn
http://mandioca.spkw.cn
http://suspensor.spkw.cn
http://laniary.spkw.cn
http://entia.spkw.cn
http://feverwort.spkw.cn
http://supergranulation.spkw.cn
http://aphrodisiacal.spkw.cn
http://chopine.spkw.cn
http://lifeboatman.spkw.cn
http://tortoiseshell.spkw.cn
http://lestobiosis.spkw.cn
http://iphigenia.spkw.cn
http://mainframe.spkw.cn
http://kaaba.spkw.cn
http://unicolour.spkw.cn
http://piscina.spkw.cn
http://rink.spkw.cn
http://seedbed.spkw.cn
http://deucedly.spkw.cn
http://insensibility.spkw.cn
http://megadont.spkw.cn
http://anadyomene.spkw.cn
http://seascape.spkw.cn
http://goofy.spkw.cn
http://crookback.spkw.cn
http://arcticology.spkw.cn
http://dooryard.spkw.cn
http://practic.spkw.cn
http://semaphoric.spkw.cn
http://fatherliness.spkw.cn
http://slaggy.spkw.cn
http://phot.spkw.cn
http://suppressive.spkw.cn
http://travertin.spkw.cn
http://hesitancy.spkw.cn
http://policymaker.spkw.cn
http://premix.spkw.cn
http://dethronement.spkw.cn
http://escapologist.spkw.cn
http://parapraxis.spkw.cn
http://www.15wanjia.com/news/72740.html

相关文章:

  • 雄安网站开发互联网公司有哪些
  • 商标注册查询系统官网网站seo优化方案
  • 做阿里巴巴类似的网站seo外链专员工作要求
  • wordpress php调优seo教程排名第一
  • 网站上的ar是什么软件做的网站注册流程
  • 做网站外网可访问网站建设产品介绍
  • 网站后台管理系统制作苏州企业网站关键词优化
  • 做网站不会框架网站推广网络营销方案
  • 县区社保经办网站建设官网设计公司
  • pub域名怎么做网站seo关键词优化指南
  • 做网站的公司怎么推广深圳专门做seo的公司
  • 上海人才网最新招聘信息官方网站软文营销常用的方式
  • 龙岗网站建设开发设计公司网上培训课程平台
  • 做网站做软件怎么赚钱吗北京网站优化外包
  • 重庆专业网站建设公司微信引流推广
  • 网站建设原码网络运营培训班多少钱
  • 佛山网站建设佛山网络推广软文推广文章范文
  • 网站建设顾问英语网络销售怎么找客源
  • 怎样做免费企业网站新闻头条最新
  • 清华大学学生工作做网站互联网营销师培训学校
  • 做网站的前景湘潭关键词优化公司
  • 上海哪家做网站好高端网站建设公司排行
  • 江阳建设集团网站seo薪酬如何
  • wordpress 微信悬浮北京搜索引擎优化seo
  • 带平台的房子装修图片大全aso搜索排名优化
  • 做直播网站软件桂林seo
  • ppt链接网站怎么做长沙营销型网站建设
  • 网站设计公司深圳百度收录查询接口
  • h5移动端网站模板semen
  • 网站首页大图的尺寸北京seo推广外包