摘要:
sort快排函数的基本版,效率n*logn,快排的完全版就是在递归之中夹杂对序列的预判断,最优的选择排序方法,快速排序算法只是其中之一。 简单的说明一下快速排序的思想,对于一个数列,首先选择一个基数(x),进行第一次排序,把比x 小的放在x左边,大的放右边(默认从小到大)。 例如 : ... 阅读全文
摘要:
GC即垃圾收集器,虚拟机的必要组成部分。 不过这里说当然是,hotspot虚拟机(jvm的主要版本)的GC机制,前面说过了jvm的组成部分,那么想当然GC只需要负责方法区和堆就好了,虚拟机栈、本地方法栈、程序计数器随线程而生,随线程而死,为毛要回收内存? 先说堆,它分为新生代和... 阅读全文
摘要:
对象是面向对象设计语言无法回避的东西,可见其重要性,JAVA的对象相较于C++来说,不算很复杂,但是我们看到一句话背后往往有很多东西值得探讨(NEW关键字)。 对象如何被创建? 首先一句简单的NEW语句,比如:StringBuffer string = new String... 阅读全文
摘要:
jvm内存大致可以分为六大块: 堆,虚拟机主要内存,可以形象的说,堆是对象的存储库,几乎所有的对象实例和数组都在此分配内存,当然也死于此,jvm垃圾回收机制(简称GC)主要处理的就是这个地方。它被所有线程共享,没错,这可能造成一些问题,此处留到讨论对象时再说。堆的存储空间在物理上不... 阅读全文
摘要:
平台搭建就摸了一整天时间,真的是、、、不说了,最后我选择的是 opencv3.0(2015/06/04) + win7 + vs2012 注意opencv的版本不同导入的库文件是不一样的,所以请慎重选择版本! 下载安装就不说了,很简单,这里只说一下如何导入库文件。其实可以把文... 阅读全文
摘要:
浮点数分为单精度(float)和双精度(double),它们的表示方法很特别,区别于整数,我们常用的十进制表示法也有穷尽不能表示的数,更不用说二进制了,那么他们是怎么表示的呢? 首先要知道11.11(二进制) 这个该怎么换算? 11.11 = 1*2^1+1*2^0+1*2^-1+... 阅读全文
摘要:
对于计算机来说,加减乘除法全部用二进制来实现,那么他们是如何实现的呢? 先说加法,加法有两种,其实区别不大只是解释方式不同,原码加法(无符号)和补码加法(有符号,加完依然是补码)。方法都一样,有一落一,无一落零,两一进位。但这样必须考虑溢出的问题,对于32位机,所有数都用32位来表... 阅读全文
摘要:
一个小规律, 2^n-2^(n-1) = 2^(n-1) 3^n-3^(n-1)=2*3^(n-1) 。 位扩展其实很好理解,正数和0往前加零就够了,负数则是往前加一,不过注意位扩展往往都是隐形的,不知不觉就扩展了,比如 short i = 6; int j = i; 注意 位扩展 数... 阅读全文
摘要:
对于有符号数,最高位为其符号位,底层为补码表示法(现在还有非补码表示的吗) 。 那么对于 0110 = 0*2^3+1*2^2+1*2^1+0*2^0 = 6 1011 = 1*(-2)^3+0*2^2+1*2^1+1*2^0 = -5 这样就避免了补码-》反码-》原码-》... 阅读全文
摘要:
题意很好懂,大致就是三种颜色,红和蓝一起会变绿,给个终态矩阵,问从原始状态到终态最少画几笔? 按一定规则画 思路就是记红为1,蓝为2,绿为3,先遍历绿色,针对每一块绿色进行删除,每找到一块绿色,首先将它置零,然后主对角线上和它挨着的红色或绿色-1,副对角线上和它挨着的蓝色或绿色-2,ans+2... 阅读全文