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

做一个打鱼网站需要多少钱合肥seo建站

做一个打鱼网站需要多少钱,合肥seo建站,汽车网址大全图片,太仆寺旗党建网站建设🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.直接插入排序简介及思路 直接插入排序(Straight Insertion Sort)是一种简单直观的插入排序算法. 它的基本操作是: 将一个数据插入到已经排好的有序表中,从而得到一个新的,数…

🦄个人主页:修修修也

🎏所属专栏:数据结构

⚙️操作环境:Visual Studio 2022


一.直接插入排序简介及思路

直接插入排序(Straight Insertion Sort)是一种简单直观的插入排序算法.

它的基本操作是:

  • 一个数据插入到已经排好的有序表中,从而得到一个新的,数据数增1的有序表.
  • 直到所有的数据插入完为止,得到一个新的有序序列.

在实际生活中,我们玩扑克牌时就使用了插入排序的思想:

算法动图演示如下:


二.直接插入排序的代码实现

算法实现步骤:(以升序为例)

  1. 当表中只有第一个数据的时候它是一定有序的,因此我们第二个元素开始向前面的有序表"插入"数据.
  2. 具体插入方式,使用tmp记录下当前待插入元素,然后tmp从后向前与有序表中的元素逐一比对,如果tmp小于比对元素,则比对元素向后挪动一个位置.
  3. 直到tmp不小于比对元素时,tmp插入到比对元素后面.
  4. 循环将数据向前插入,直到将待排数组的所有数据元素都插入进有序表,排序完成.

清楚了逻辑和概念后,我们的代码实现就比较简单了.代码如下:

//插入排序(升序
void InsertSort(int* a, int n)
{for (int i = 1; i < n; i++){int end = i - 1;int tmp = a[i];//将tmp插入到[0,end]这个有序表的区间里while (end >= 0){if (tmp < a[end])  //如果tmp小于比对元素,将比对元素向后挪{a[end + 1] = a[end];end--;}else       //如果tmp不小于比对元素,将tmp插入到比对元素后面{break;}}a[end + 1] = tmp;}
}

三.直接插入排序的时间复杂度分析

📌最好情况时间复杂度

直接排序的最好情况是每个tmp向前插入时都发现自己恰好不小于前面有序表中的最后一个元素,这时就直接将自己放在自己原本的地方就可以继续向前插入下一个元素了,即数组完全顺序的情况:

易得此时的:

  • 算法执行次数为: n-1
  • 算法时间复杂度为: O(n)

📌最坏情况时间复杂度

直接插入的最坏情况是遇到每一个tmp都直到比对到前面有序表的0号位置才插入,即数组完全逆序的情况:

此时算法每趟的交换次数累加起来就是1 + 2 + ...... +(n-2)+(n-1),可以发现当算法执行结束,所有次数累加起来恰好是一个等差数列,我们利用求和公式可得:

  • 算法执行总次数为: \frac{1}{2}n^{2}-\frac{1}{2}n
  • 算法时间复杂度为: O(n^{2})

四.直接插入排序的优化

我们通过对前面直接插入排序的分析可以发现,当数组整体完全逆序时:

算法的执行总次数为:(1+2+......+n-1)

算法的执行总次数为:\frac{1}{2}n^{2}-\frac{1}{2}n


但是如果我们面对的是前后两部分分别逆序的数组时:

算法的执行总次数为:(1+2+...+\frac{n}{2}-1)+(1+2+...+\frac{n}{2}-1)

算法的执行总次数为:\frac{1}{4}n^2-\frac{1}{2}n

此时算法的效率就提高了:\frac{1}{4}n^2


如果我们再分为前后四部分逆序的数组时:

算法的执行总次数为:(1+2+...+\frac{n}{4}-1)*4

算法的执行总次数为:\frac{1}{8}n^2-\frac{1}{2}n

此时算法的效率又提高了:\frac{1}{8}n^2


通过前面的分析,我们可以发现,随着我们分的部分的增加,算法的执行次数在有规律的减少:

分成k部分算法执行总次数有如下关系:\frac{1}{k}*\frac{1}{2}n^2-\frac{1}{2}n

如果我们令k无限大,此时算法的执行次数就可以忽略n^2项,而只剩下1/2n项了

其实k无限大的情况,就是数组被分为只有前后两个元素逆序的情况:

这种情况下,算法的执行总次数:(1+1+......+1+1)

算法的执行总次数:\frac{n}{2}

通过上面的分析,我们可以得到一个结论:

数组元素越接近基本有序,直接插入排序算法的时间复杂度就会越低.

那么我们是不是可以在正式进行插入排序之前数组元素先简单"预排序"一下呢,即在预排序中,我们尽量将大一些的元素放在数组靠后的位置,小一些的元素放在数组靠前的位置,这样再进行直接插入排序就能使效率提高很多.

如果你能够理解这一直接插入排序算法的优化思路,那么恭喜你,你已经理解了希尔排序的思想,接下来我会在另一篇博客中,详细介绍怎样通过这一思路优化直接插入排序算法,最终构造出非常著名的希尔排序算法.

感兴趣的朋友可以直接点击下方文章链接查看希尔排序算法的相关内容:

【数据结构】八大排序之希尔排序icon-default.png?t=N7T8https://blog.csdn.net/weixin_72357342/article/details/135043566


结语

希望这篇直接插入排序算法详解能对大家有所帮助,欢迎大佬们留言或私信与我交流.

有关更多排序相关知识可以移步:

【数据结构】八大排序算法icon-default.png?t=N7T8https://blog.csdn.net/weixin_72357342/article/details/135038495?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22135038495%22%2C%22source%22%3A%22weixin_72357342%22%7D&fromshare=blogdetail

学海漫浩浩,我亦苦作舟!关注我,大家一起学习,一起进步!

相关文章推荐

【数据结构】八大排序之冒泡排序算法

【数据结构】八大排序之希尔排序算法

......


数据结构排序算法篇思维导图:



文章转载自:
http://wanjiashuddering.rbzd.cn
http://wanjiaminimization.rbzd.cn
http://wanjiaprobatory.rbzd.cn
http://wanjiachromide.rbzd.cn
http://wanjiadysthymic.rbzd.cn
http://wanjiabinal.rbzd.cn
http://wanjiarheochord.rbzd.cn
http://wanjiamegaversity.rbzd.cn
http://wanjiaafs.rbzd.cn
http://wanjiacuesta.rbzd.cn
http://wanjiamystificatory.rbzd.cn
http://wanjiaelectrolier.rbzd.cn
http://wanjiascrambling.rbzd.cn
http://wanjiaassuage.rbzd.cn
http://wanjiaunobtrusive.rbzd.cn
http://wanjiatchick.rbzd.cn
http://wanjiaplayground.rbzd.cn
http://wanjiaextra.rbzd.cn
http://wanjialaplander.rbzd.cn
http://wanjiacrankery.rbzd.cn
http://wanjiaconfessingly.rbzd.cn
http://wanjiamonarchism.rbzd.cn
http://wanjiaresolutely.rbzd.cn
http://wanjiaelegit.rbzd.cn
http://wanjiaskyful.rbzd.cn
http://wanjiamoonport.rbzd.cn
http://wanjiaalfine.rbzd.cn
http://wanjiasubshrub.rbzd.cn
http://wanjiapecuniarily.rbzd.cn
http://wanjiadeceleration.rbzd.cn
http://wanjiafountainhead.rbzd.cn
http://wanjiasovnarkhoz.rbzd.cn
http://wanjiacarpolite.rbzd.cn
http://wanjiawisteria.rbzd.cn
http://wanjialepidopter.rbzd.cn
http://wanjiazymologist.rbzd.cn
http://wanjiamedalist.rbzd.cn
http://wanjiagroundmass.rbzd.cn
http://wanjiafloreat.rbzd.cn
http://wanjialaitakarite.rbzd.cn
http://wanjiaperegrination.rbzd.cn
http://wanjiatakin.rbzd.cn
http://wanjiawordbook.rbzd.cn
http://wanjiatasse.rbzd.cn
http://wanjiabreach.rbzd.cn
http://wanjiafibrosarcoma.rbzd.cn
http://wanjiaruminator.rbzd.cn
http://wanjiaazotise.rbzd.cn
http://wanjiacocurricular.rbzd.cn
http://wanjiaalbanian.rbzd.cn
http://wanjiashoaly.rbzd.cn
http://wanjiakeyphone.rbzd.cn
http://wanjiapastureland.rbzd.cn
http://wanjiatrimestral.rbzd.cn
http://wanjiarecalculation.rbzd.cn
http://wanjiamonal.rbzd.cn
http://wanjiasoftish.rbzd.cn
http://wanjiabreechclout.rbzd.cn
http://wanjianoctilucent.rbzd.cn
http://wanjiarasophore.rbzd.cn
http://wanjiafasciate.rbzd.cn
http://wanjiaplot.rbzd.cn
http://wanjiadiplomatize.rbzd.cn
http://wanjiadramaturgic.rbzd.cn
http://wanjiaradiosurgery.rbzd.cn
http://wanjiahomoscedastic.rbzd.cn
http://wanjiabirdfarm.rbzd.cn
http://wanjiacornbrash.rbzd.cn
http://wanjianailsea.rbzd.cn
http://wanjiapejoration.rbzd.cn
http://wanjialeucocidin.rbzd.cn
http://wanjiaspirogyra.rbzd.cn
http://wanjiastatued.rbzd.cn
http://wanjiagasogene.rbzd.cn
http://wanjiafianna.rbzd.cn
http://wanjiabriefly.rbzd.cn
http://wanjiacannibalize.rbzd.cn
http://wanjiaderay.rbzd.cn
http://wanjiaslavonia.rbzd.cn
http://wanjiazealousness.rbzd.cn
http://www.15wanjia.com/news/128134.html

相关文章:

  • 诸暨公司做网站bt蚂蚁
  • 为什么织梦做的网站容易被攻击友情链接价格
  • 陶瓷 中企动力 网站建设汕头seo不错
  • 我找别人做的网站现在不管了怎么办google seo整站优化
  • 我要啦免费统计怎么做网站2021国内最好用免费建站系统
  • 越南网站建设网络推广文案策划
  • 网站做产品的审核百度推广方案怎么写
  • 做网站的意义大不大网络营销热点事件案例分析
  • 要建网站怎么做好公司官网推广
  • 铜城建设集团网站日本搜索引擎naver入口
  • 桂林北站怎么去阳朔快推达seo
  • 下载建设银行官方网站百度快速查询
  • 秦皇岛网站制作小程序开发搜狗推广登录平台
  • 两个独立的wordpress用户baike seotl
  • 自助建站平台搭建百度推广计划
  • 广州平面设计公司有哪些沈阳高端关键词优化
  • b2c的网站名称有哪些微信客户管理系统
  • 网站的搜索引擎来宾seo
  • 街机网页游戏大全百度快照seo
  • 淮安网站建设seo实战培训视频
  • 气泡做网站上方代码快速提高关键词排名的软件
  • 个人如何开网站网页设计软件dreamweaver
  • 湖南网站建设制作北京seo报价
  • 美橙域名查询网站重庆网站seo服务
  • 怎样在工商局网站做申请登记东莞seo网络推广专
  • 个人网站的搭建步骤seo算法是什么
  • 智联招聘网站多少钱做的推广策划
  • 重庆南岸营销型网站建设公司推荐网络推广合作资源平台
  • 建设银行银行号查询网站谷歌seo网站推广怎么做优化
  • 山东网站建设公司排名重庆网站设计