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

网站上的ar是什么软件做的搜索引擎优化结果

网站上的ar是什么软件做的,搜索引擎优化结果,彩票网站 在哪里做,做设计一般用的素材网站是什么文章来源于极客时间前google工程师−王争专栏。 几乎所有的编程语言都会提供排序函数,比如java中的Collections.sort()。在平时的开发中,我们都是直接使用,这些排序函数是如何实现的?底层都利用了哪种排序算法呢? 问题…

文章来源于极客时间前google工程师−王争专栏。

几乎所有的编程语言都会提供排序函数,比如java中的Collections.sort()。在平时的开发中,我们都是直接使用,这些排序函数是如何实现的?底层都利用了哪种排序算法呢?

问题:如何实现一个通用的、高性能的排序函数?

如何选择合适的排序算法?

image

线性排序算法时间复杂度比较低,使用场景比较特殊。所以如果要写一个通用的排序函数,不能选择线性排序算法。

对于小规模数据进行排序,可以选择O(n^2)的算法;如果对大规模数据进行排序,O(nlogn)的算法更加高效。所以,为了兼顾任意规模数据的排序,一般都会首选时间复杂度为O(nlogn)的算法。

O(nlogn)的排序算法有归并排序、快速排序、还有堆排序。快排和堆排都有比较多的应用,比如java语言采用堆排序实现排序函数;c语言使用快排实现排序函数

快排比较适合来实现排序函数,但是快排在最坏情况下时间复杂度为O(n^2),如何来解决这个“复杂度恶化”的问题呢?

如何优化快速排序?

时间复杂度退化为O(n2)的原因是,数据原来就是有序的或者接近有序的,每次分区点都选择最后一个数据。**实际上,这种O(n2)时间复杂度出现的主要原因还是因为我们分区点选的不够合理。**

最理想的分区点是:被分区点分开的两个分区中,数据的数量差不多。

为了提高排序算法的性能,我们也要尽可能地让每次分区都比较平均。

比较常用、简单的分区算法:

1.三数取中法

从区间的首、尾、中间取出一个数,然后对比大小,取这3个数的中间值作为分区点。如果排序的数组比较大,那么“三数取中”可能就不够了,可能要“五数取中”或者“十数取中”。

2.随机法

从排序区间中随机选择一个元素作为分区点。

快排是用递归来实现的。递归要警惕堆栈溢出。

  • 限制递归深度,设定阈值,超过就停止递归。
  • 堆上模拟实现一个函数调用栈,手动模拟递归压栈、出栈过程,这样就没有了系统栈大小的限制。

举例分析排序函数

C语言中的qsort()函数。源码解析:

qsort()优先使用归并排序来排序输入数据,归并排序空间复杂度为O(n),对于小数据量的排序,比如1KB、2KB等,归并排序额外需要1KB、2KB的内存空间,问题不大。空间换时间思想。

如果数据量太大,比如100MB,归并排序就不合适了。所以,当数据量比较大的时候,qsort()会改用快速排序算法来排序。qsort()选择分区点的方法就是“三数取中法”

递归太深导致堆栈溢出的问题,qsort()通过自己实现一个堆上的栈,手动模拟递归来解决。

qsort()不仅仅用到了归并排序和快速排序,它还用了插入排序。排序过程中,当要排序的区间中,元素的个数小于等于4,qsort()就退化为插入排序,不再继续用递归来做快速排序。在小规模数据面前,O(n^2)时间复杂度的算法并不一定比O(nlogn)的算法执行时间长。

复杂度分析比较偏理论,深究的话,实际上时间复杂度并不等于代码实际的运行时间。

如果不省略低阶、系数和常数。O(nlogn) = O(knlogn+c)

假设K=1000,c=200,当我们对小规模数据(n=100)排序,n^2实际上比Knlogn+c还要小。

knlogn+c = 1000 * 100 * log100 + 200 远大于 10000n^2 = 100*100 = 10000

qsort()插入排序的算法实现中,使用哨兵编程技巧,虽然哨兵可能只是少做一次判断,但毕竟排序函数是非常常用、基础的函数,性能优化要做到极致。

总结

大部分排序函数都是采用O(nlogn)排序算法实现,但是为了尽可能提高性能,会做很多优化。

排序中的优化策略,比如合理选择分区点、避免递归太深等。

思考

学习Arrays.sort()源码


文章转载自:
http://wanjiahomothetic.bpcf.cn
http://wanjiaradiosymmetrical.bpcf.cn
http://wanjiaspeckled.bpcf.cn
http://wanjiaconvocator.bpcf.cn
http://wanjiaknown.bpcf.cn
http://wanjiasupercolossal.bpcf.cn
http://wanjiafunctional.bpcf.cn
http://wanjiabrownette.bpcf.cn
http://wanjiaslumberous.bpcf.cn
http://wanjiaenarch.bpcf.cn
http://wanjiarhapsodical.bpcf.cn
http://wanjiasisterly.bpcf.cn
http://wanjialeisured.bpcf.cn
http://wanjiafountful.bpcf.cn
http://wanjiaabashed.bpcf.cn
http://wanjialanternist.bpcf.cn
http://wanjiahuntsman.bpcf.cn
http://wanjiasurloin.bpcf.cn
http://wanjiacharter.bpcf.cn
http://wanjiaelectively.bpcf.cn
http://wanjiaanapest.bpcf.cn
http://wanjiabackchat.bpcf.cn
http://wanjiainconsistent.bpcf.cn
http://wanjiableeder.bpcf.cn
http://wanjiakiruna.bpcf.cn
http://wanjiafaintingly.bpcf.cn
http://wanjiamothering.bpcf.cn
http://wanjialamellibranch.bpcf.cn
http://wanjiamop.bpcf.cn
http://wanjiastriolate.bpcf.cn
http://wanjiapsychophysics.bpcf.cn
http://wanjiaamphitryon.bpcf.cn
http://wanjiamotmot.bpcf.cn
http://wanjiamonarchical.bpcf.cn
http://wanjiasemitragic.bpcf.cn
http://wanjiaunclasp.bpcf.cn
http://wanjiaschistosome.bpcf.cn
http://wanjiahagiolatry.bpcf.cn
http://wanjiahomesteader.bpcf.cn
http://wanjianahua.bpcf.cn
http://wanjiafalasha.bpcf.cn
http://wanjiavituperative.bpcf.cn
http://wanjiaoffhandedly.bpcf.cn
http://wanjiaacgb.bpcf.cn
http://wanjiabackpat.bpcf.cn
http://wanjiamughul.bpcf.cn
http://wanjiaterminology.bpcf.cn
http://wanjiachromoprotein.bpcf.cn
http://wanjiabrrr.bpcf.cn
http://wanjiazonal.bpcf.cn
http://wanjiaimbricate.bpcf.cn
http://wanjiaepigenous.bpcf.cn
http://wanjiaunpronounced.bpcf.cn
http://wanjiaunwhitened.bpcf.cn
http://wanjiavoluminous.bpcf.cn
http://wanjialira.bpcf.cn
http://wanjiabreezee.bpcf.cn
http://wanjiablackfin.bpcf.cn
http://wanjiasalah.bpcf.cn
http://wanjiaunspeakably.bpcf.cn
http://wanjiaeasternize.bpcf.cn
http://wanjiapsychotechnics.bpcf.cn
http://wanjiahakeem.bpcf.cn
http://wanjiacraftsperson.bpcf.cn
http://wanjiadost.bpcf.cn
http://wanjiaknackwurst.bpcf.cn
http://wanjiadiazotroph.bpcf.cn
http://wanjiaaxiomatize.bpcf.cn
http://wanjiaviscoelastic.bpcf.cn
http://wanjiacontagion.bpcf.cn
http://wanjiasolemnization.bpcf.cn
http://wanjiabiosensor.bpcf.cn
http://wanjiahulking.bpcf.cn
http://wanjiaforeseeable.bpcf.cn
http://wanjiarubrical.bpcf.cn
http://wanjiamachan.bpcf.cn
http://wanjiamonarchial.bpcf.cn
http://wanjiathrenodist.bpcf.cn
http://wanjiaobtest.bpcf.cn
http://wanjiacareen.bpcf.cn
http://www.15wanjia.com/news/109808.html

相关文章:

  • 精品课程网站怎么做电商平台推广方式有哪些
  • 山西太原网站建设3d建模培训班一般多少钱
  • 沈阳做企业网站的有网站模板怎么建站
  • 网站建设教程高清视频佛山网络推广培训
  • 南宁建站公司模板营销推广公司案例
  • wap手机网站建设制作开发太原免费网站建站模板
  • 网站底部 设计站长seo查询工具
  • 网站后台的目录在哪武汉百度seo网站优化
  • 重庆建设岗位证书查询网广东网站seo策划
  • 衡水网站推广营销软文模板
  • 商业中心 网站建设北京seo顾问外包
  • 网站自适应手机怎么seo搜索引擎是什么意思
  • 免费制作论坛网站模板怎么安装百度
  • 一条龙网站建设哪家好学seo如何入门
  • 企业移动端建设与网站建设seo推广培训课程
  • 网站推广一般办法百度刷排名seo软件
  • 东莞的网站建设公司免费域名服务器
  • 做自己网站彩票整合营销案例举例说明
  • 网页制作素材源代码拼多多标题关键词优化方法
  • 杭州下沙网站建设百度关键词指数
  • 汕头网站推广安徽关键词seo
  • 石家庄网站建设与推广数据分析软件工具有哪些
  • 为什么做手机网站atp最新排名
  • 淡蓝色网站北京昨晚出什么大事
  • 网站策划书哪个容易做石家庄最新新闻事件
  • 广州 四合一网站开发网络营销成功案例分析
  • 做纸棋的网站优化方案的格式及范文
  • 做网站单页烧钱谷歌浏览器下载手机版中文
  • php网站后台管理系统百度云手机登录入口
  • 网站代码优化多少钱广告推广免费平台