读书人

黑马软件工程师_学会阅读java源代码

发布时间: 2013-02-24 17:58:56 作者: rapoo

黑马程序员_学会阅读java源代码,至少要勇敢尝试

?呼....惭愧啊。后面5,6,7基本上每一句都看的非常晕。看了一个多小时还是很头痛。看样子功力确实是不够。

?

但是,至少还是有些感悟。1、虽然是一个简单的方法,但是实现的过程非常复杂。会多次跳转到其他方法,因为这样不断将好的方法封装好,才能不断的被充分的利用。2、有很多特别的技巧以及非常复杂的原理,如果对一个double类型的数据调用isNaN的方法。我查了一下相关资料,实在是太复杂了。3.虽然说前面的方法的名字取的是快速排序,但是从后面的代码来看,其实是要不断根据数组的长度选择合适的排序方法,比如当数组的长度短到一定程度的时候,可以使用直接插入排序法,效率更高。4.居然还要区分正0和负0.经过查阅,发现负零是一个在计算机科学中存在的数,但是在数学中不存在。在对于整数的1+7比特的符号数值表示法中,负零是用二进制代码10000000表示的。在8比特二进制反码中,负零是用二进制代码11111111表示。在IEEE 754二进制浮点数算术标准中,指数和尾数为零、符号比特为一的数就是负零。其中IEEE 754:IEEE二进制浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器(原来的都是用整数运算器)所采用.另外,浮点型简单讲就是实数的意思。

?

实在是太复杂了。但是这篇博客略微有些失败,搞的太深入,结果自己啥也没学到的感觉。最后,我觉得拜读一下最基本的:DualPivotQuicksort的算法。至少肯定有点长进。结果发现确实有不少的长进,我居然只能找到一篇存英文的论文,才有了解到DualPivotQuicksort的情况。结果发现我还是看不懂,居然连算法思想都看不懂。更不要说源代码了。所以我决定将算法思想翻译一遍,至少还是要有点长进吧。下图为论文—ual-Pivot Quicksort algorithm 作者:Vladimir Yaroslavskiy)中描述算法思想的部分。


黑马软件工程师_学会阅读java源代码,至少要勇敢尝试
?

?

1、对于那些数组长度低于27的,采用插入算法排序

2、选择两个中心点p1和p2.我们可以通过取最左边的点和最右边的点得到

3、p1必须小于p2,否则就交换,并且有如下几个部分

partI 从left+1知道L-1的部分,这部分必须小于p1

partII 从L到K-1的部分,这部分必须大于p1且小于p2

partIII 从G+1到right-1部分,这部分必须大于p2

partIV ?从k到g,是除了了上三类的元素

4、让存在于partIV的a[k]与p1和p2比较,放入到相应的partI或partII或partIII。

5、然后L、K、G发生相应的改变

6、当K<=G的时候重复第四步和第五步

7.将中心点p1与partI 的最后一个元素交换

? 将中心点p2与partIII 的第一个一个元素交换

8.对partI、partII、partIII递归执行第一步到第七步。

?

?

总结教训:没有金刚钻就不要揽瓷器活,现在还没有到这个地步,还是要从基础抓起啊!!

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?------- android培训、java培训、期待与您交流! ----------

读书人网 >编程

热点推荐