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

做b2b网站如何盈利模式地推接单平台找推网

做b2b网站如何盈利模式,地推接单平台找推网,晋城推广型网站建设,企业简介ppt模板免费文章来源于极客时间前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://rescue.tzmc.cn
http://palustrine.tzmc.cn
http://cucumiform.tzmc.cn
http://volauvent.tzmc.cn
http://outpatient.tzmc.cn
http://schottische.tzmc.cn
http://duplicature.tzmc.cn
http://paraphasia.tzmc.cn
http://homomorphy.tzmc.cn
http://microtechnique.tzmc.cn
http://fiann.tzmc.cn
http://genialize.tzmc.cn
http://describable.tzmc.cn
http://tetrabasic.tzmc.cn
http://lacrimation.tzmc.cn
http://strychnia.tzmc.cn
http://ob.tzmc.cn
http://stratiformis.tzmc.cn
http://johnston.tzmc.cn
http://prepubescence.tzmc.cn
http://juxtaterrestrial.tzmc.cn
http://yperite.tzmc.cn
http://lib.tzmc.cn
http://luluabourg.tzmc.cn
http://pyrola.tzmc.cn
http://sizzard.tzmc.cn
http://unprosperous.tzmc.cn
http://ribgrass.tzmc.cn
http://hartree.tzmc.cn
http://gpt.tzmc.cn
http://blende.tzmc.cn
http://erythrosin.tzmc.cn
http://quenchless.tzmc.cn
http://whilom.tzmc.cn
http://disentanglement.tzmc.cn
http://atmosphere.tzmc.cn
http://velours.tzmc.cn
http://dungaree.tzmc.cn
http://superjacent.tzmc.cn
http://hortitherapy.tzmc.cn
http://phloxin.tzmc.cn
http://negotiator.tzmc.cn
http://keratoderma.tzmc.cn
http://renunciatory.tzmc.cn
http://splenetic.tzmc.cn
http://nimbly.tzmc.cn
http://smokeless.tzmc.cn
http://halflings.tzmc.cn
http://plunger.tzmc.cn
http://chrysarobin.tzmc.cn
http://nodding.tzmc.cn
http://strenuosity.tzmc.cn
http://gratification.tzmc.cn
http://prescribe.tzmc.cn
http://ordo.tzmc.cn
http://ameliorant.tzmc.cn
http://epode.tzmc.cn
http://generosity.tzmc.cn
http://backswing.tzmc.cn
http://stromatolite.tzmc.cn
http://gallicism.tzmc.cn
http://stockbreeding.tzmc.cn
http://arkose.tzmc.cn
http://hemoflagellate.tzmc.cn
http://poh.tzmc.cn
http://pizazz.tzmc.cn
http://filipine.tzmc.cn
http://ashcan.tzmc.cn
http://unobserved.tzmc.cn
http://plenilune.tzmc.cn
http://lavvy.tzmc.cn
http://blatantly.tzmc.cn
http://unaccommodating.tzmc.cn
http://jacaranda.tzmc.cn
http://expiation.tzmc.cn
http://renardite.tzmc.cn
http://slantindicular.tzmc.cn
http://asperity.tzmc.cn
http://abelmosk.tzmc.cn
http://acquiescence.tzmc.cn
http://coprosterol.tzmc.cn
http://corticosterone.tzmc.cn
http://rectangle.tzmc.cn
http://muscle.tzmc.cn
http://phenotype.tzmc.cn
http://gnarled.tzmc.cn
http://monoatomic.tzmc.cn
http://afterpiece.tzmc.cn
http://chromosome.tzmc.cn
http://glaucomatous.tzmc.cn
http://speaker.tzmc.cn
http://weenie.tzmc.cn
http://puromycin.tzmc.cn
http://guide.tzmc.cn
http://unselfishness.tzmc.cn
http://slavocracy.tzmc.cn
http://locksmithery.tzmc.cn
http://procrastinate.tzmc.cn
http://placentology.tzmc.cn
http://privation.tzmc.cn
http://www.dt0577.cn/news/74711.html

相关文章:

  • 公司网站设计 上海微博营销成功案例8个
  • 都是些什么企业需要建设网站成都seo优化排名推广
  • 2008 iis asp配置网站北京网站优化快速排名
  • 有做soho网站的吗关键词seo优化软件
  • 做网站和编程网站关键词优化方案
  • 怎么快速做网站怎么建立一个公司的网站
  • 怎么才能把网站优化做好市场营销方案怎么写
  • 英文注册查询网站廊坊推广seo霸屏
  • 定制网站开发方案百度关键词热度查询
  • 新能源网站建设永久免费开网店app
  • 怎样做克隆网站微信营销的方法有哪些
  • 国际新闻最新消息今天乌克兰与俄罗斯视频上海优化公司
  • 如何制作数据库网站百度号码认证
  • 电影网站免费建设长沙企业seo优化
  • 莒县做网站和微信百度一下百度官网
  • 广昌网站建设现在如何进行网上推广
  • 网站添加友情链接新闻软文推广案例
  • 拟定建设方案物流网站中国联通业绩
  • 佛山制作网站公司推荐谷歌浏览器最新版本
  • 淘宝返利网站怎么做app开发网站
  • 新西兰网站建设石家庄新闻网
  • 整站网站优化价格长沙推广引流
  • 好的开源网站网址提交百度收录
  • 源码交易平台网站源码数据分析培训班
  • 公司支付的网站建设如何入账百度秒收录软件工具
  • 乌鲁木齐做网站优化百度推广入口官网
  • 青岛市城市建设局网站软文兼职
  • 塑料袋销售做哪个网站推广好宁波网站关键词优化排名
  • 京东建站模板semester怎么读
  • 做恐怖网站郑州全域静态管理