从timsort引发的一系列深思....

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LuciferMS/article/details/89607735

博主昨天晚上跟一群志同道合的基友根据一位兄弟的阿里模拟面筋展开了一场长达三个钟的讨论,
其中一位兄弟提到了timsort这种排序方法,说jdk中Arrays.sort()这个方法使用到了timsort这种算法,博主对这一部分的只是不是特别的熟悉,所以今天特意去了解了一下…发现这件事情并不是那么简单…
当Arrays.sort()处理的是基本数据类型的时候,使用的并不是timsort而是双轴快排,当他处理引用类型的时候才使用timsort…
下面是博主今天的学习资料,请结合jdk源码进行学习…
timsort是什么???
java中的timsort
快排及其变种

那么为什么基本数据类型使用的是快排,而引用类型使用的是timsort呢??
博主百度了一下
为什么Arrays.sort要使用两种不同的算法

在这里插入图片描述

展开阅读全文

胡吹一波js ,箭头函数引发深思

07-04

箭头函数和普通函数的区别是什么?rn箭头函数绑定了this,普通函数不绑定thisrnrnwhy? rn小伙伴们知道箭头函数没有constructor 吗?(构造器),没有prototype 吗? 原型链rn这些是什么? 都是面向对象的东东啊 ,没有constructor 就没有办法作为一个对象使用,无法通过 new 关键字去构造一个实例,自然js基于原型链的继承也就无意义,prototype就可以扔掉了,那么this 就自然而然的绑定了作用域,也就不会产生奇奇怪怪的问题,表现就很单纯.rnrn问题来了,有哪个小伙伴想过之前为什么让人痛苦万分的function是什么鬼吗? rnrn来来来听我胡吹一波.rnfunction 是js 里面的函数,也是class,对象,问题就是坏在这里了,在绝大数时候,我们想要的只是一个单纯的函数,但是人家有constructor ,只要function里面包含了this ,即使没有使用new 关键字去声明对象,也会改变this的指向,可以理解为是一个副作用,rn当我想使用纯对象的时候,又得防止被当做函数调用,宝宝心中苦啊,下面小伙伴说:"使用安全模式啊" ,嗯,在不使用apply,call,bind 这些强制改变this 的,玩意儿的前提下,安全模式是有效的,自然说了前提,那就是不怎么安全. 所以想来想去诶,我给你们一个新的属性值new.target用着,嘿嘿,这个终于没有什么副作用了,大家都以为这个是新的语法,NonoNo,那只是对于开发来说,其实有很多方法就是这样实现的..rnrn下面我举个栗子rnrn例如 var a = document.getElementById; a('aa'); 获取Id为aa 的元素,报错了,为啥子腻,由于获取元素必须是dom 才能使用的方法,这里赋值实际上就改到window 上面去了, getElementById 是document的方法 ,赋值给window.a . window.a === document.getElementById ,当前this,绑定的就是window,不行so 错啦.. rnrn好了就这样瞎扯了,其实函数闭包也是让人感觉很坑爹的,下次再写,rnrn纯属个人胡吹,愿意拍砖的,一起聊聊嘛.[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/3.gif][/img] 论坛

没有更多推荐了,返回首页