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

网站在线qq代码网页设计师培训哪个好

网站在线qq代码,网页设计师培训哪个好,免费网站怎么申请,商务网站专题页一,概述 书接前文【Java】Arrays.sort:DualPivotQuicksort-CSDN博客 Arrays.sort对基本数据类型使用了双轴快速排序,但是对Object[]类型,则使用了TimSort,TimSort是稳定的排序,它整合了插入排序归并排序,…

一,概述

书接前文【Java】Arrays.sort:DualPivotQuicksort-CSDN博客

Arrays.sort对基本数据类型使用了双轴快速排序,但是对Object[]类型,则使用了TimSort,TimSort是稳定的排序,它整合了插入排序+归并排序,存在空间换时间策略,本文简单解析下此算法实现。

二,实现

入口,Object[]调用Arrays.sort方法

sort内部根据配置策略,使用旧版归并排序,或TimSort,

进入第二个分支,以下sort算法即TimSort,本篇文章分析核心。

TimSort是插入排序+归并排序结合的算法,兼顾了两种排序的优点,比如插入排序时间复杂度最优可以达到O(N),但最差O(N^2)。归并排序是稳定排序,时间复杂度是O(NLogN),空间复杂度O(N),TimSort结合了两种排序优缺点,时间复杂度在O(N)~O(NLogN),空间复杂度是O(N)。

此sort算法分步骤进行如下:

1,计算序列最小分块长度

2,对序列分块进行线性扫描,得到N块有序序列

3,对有序序列进行合并

4,当有序序列最后只剩1块,排序完成,

接下来,看下java内部实现

1,拿到序列size,保存至nRemaining,表示剩余序列长度

2,如果序列长度小于最小分块MIN_MERGE(32),则直接使用插入排序,此处插入排序用的binarySort,算是对查询优化,即插入新item时,会通过二分查找算法快速找到插入位置,这里就简单理解为插入排序即可。

当nRemaining >= MIN_MERGE时,开始计算最小分块个数

minRunLength是返回最小分块长度,由以上注释知,

minRunLength = n (n < MIN_MERGE) or 

MIN_MERGE/ 2 <= minRunLength <= MIN_MERGE,使得得到的序列个数n/k接近2的幂数,

此处不赘述

下一步,对最小分块进行排序,

1,线性扫描一遍,简单将指针经过序列排序,

2,如果得到的runLen长度(已有序块)< 最小分块长度,则调用插入排序重新排序,否则就忽略,

这个runLen可能是1,也可能是整个序列长度(序列原本有序),经过以上步骤,会将原序列分成N个有序序列,

下一步,将扫描有序序列入栈,并且合并,如下

栈使用数组记录,保存了每个分块的起点位置和长度,

mergeCollapse可能对stack中分组进行合并,合并算法不赘述,

最后,当整个序列合并完成后,stack中只存在一个序列,done

http://www.dtcms.com/wzjs/800746.html

相关文章:

  • 网站产品图怎么做网站推广应该怎么做
  • 网站做适配手机要多久有什么网站可以做简历
  • 做外贸的网站有何用处HTML5怎么做自适应网站
  • python 网站开发 环境上海加强旅游住宿业与商业场所
  • 图派做网站1688官网网页版
  • 深色网站哪里有做胎儿dna亲子鉴定
  • 网站建设技术质量指标优秀的h5案例
  • 网站内容建设包括什么网站排名要怎么做
  • 企业网站营销优缺点做网站软件frontpage
  • 临沂网站建设兼职苏州网站设计公司兴田德润怎么样
  • 深圳建设网站公司简介公司免费网站域名
  • 学校门户网站建设的意义个人网站备案 导航
  • 软件库网站大全wordpress实时刷新模块
  • 想开一个外企的网站怎么超做有趣的网站大全
  • 大连网络推广网站优化找哪家好wordpress订阅地址
  • 网站建设优化解析办公室装修设计方案
  • 黄石做网站公司做网站销售说辞
  • 网站更换备案号资讯是做网站还是公众号
  • 南县网站建设推荐店铺logo一键生成器
  • 网站会员模板公司网站开发费分录是
  • 网站菜单实现原理如何查询网站快照
  • 一个网站的年维护费如何做好一名销售
  • 美食教做网站邯郸做网站服务商
  • 怎样才能建一个网站手机做网站的步骤
  • 编写网站程序知名网络公司有哪些
  • 甘肃省级建设主管部门网站百度推广课程
  • 网站营销网站营销推广建设网站报价表
  • 织梦网站名称用wordpress做的商城
  • 做个商城网站要多少钱品牌建设的基本原则
  • 网站嵌入jswordpress静态首页怎么编辑