算法理解
文章平均质量分 76
iteye_16967
这个作者很懒,什么都没留下…
展开
-
快速排序之我的理解.
很多资料都在说"快速排序"是"冒泡排序"的一种改进,我没看出来,依我之见,冒泡是最基础最好理解的入门排序算法.任何算法都可以借鉴于此,那是不是任何排序的算法,都是可以说是冒泡的优化? 冒泡是交换排序的基础算法,而快排是交换排序的高级算法。快排给我的感觉跟插入排序的感觉很像,都有点挖坑填数的感觉。不同的是插入是一个一个元素的定位,少了分而治之. 快速排序主要思路是: 挖坑填数 +...原创 2014-02-26 18:22:32 · 62 阅读 · 0 评论 -
插入排序之我的理解
最近复习了下插入排序,确切的说是直接插入排序,因为插入排序之中还有个高级算法shell排序,高级的暂不讨论。 直接插入排序的主要思路不难理解,百度了下,有个大神的回复就很清晰易懂: From 百度知友ch_cityhunter: 1 5 7 3 1 6 把表分成两部分,前半部分已排序,后半部分未排序,我用|分开初始为 5 | 1 7 3 1 6 一次插入排序,把第...原创 2014-02-27 17:16:51 · 51 阅读 · 0 评论 -
双向链表之我的理解
谈到数据结构性能, 时常被问到List和Link的区别, 在回答之后,不可能避免的会将问题的焦点引到这两种存储方式的底层实现上来. List较为简洁,线形存储即可,而Link基本结构, 则是考察的重点.例如说,双向链表.Java JDK中的java.util.LinkedList就是一个双链表。 双向链表的结构如下,每个节点包括3个属性(前节点引用,后节点引用,数值)。这两个引用,指向它...原创 2014-03-03 15:40:21 · 281 阅读 · 0 评论 -
二分查找之我的理解
说到查找方法,不得不提到这个二分法查找,这个算法的实现本身不难,但这个思想,二分天下,化繁为简,一下子将数据的查找量砍掉了一半,层层定位,逐步排除不合适的数据,直到最后一个为止。相对以往的从头至尾的遍历,可以说是极大的进步。并且很多算法思想,以及框架设计都是基于此。 二分加递归,简单的代码即可实现超强的功能。 但是,二分法如此强大,还有一个原因,它是建立在数据有序的基础上。但...原创 2014-03-03 23:06:29 · 93 阅读 · 0 评论 -
HashMap实现原理之我的理解
开写之前,我想先问两个问题:为什么是数据结构,什么是算法? 【Java数据结构和算法(第二版)】写道: 数据结构是指对内存或硬盘中数据的一种安排。可以理解成数据存放或排列时的结构,如数组,链表,二叉树,哈希表等。而算法则是对数据结构中数据进行的处理。如查找,排序。 HashMap[键值对存储]和ArrayList[顺序存储]是Java集合中使用频率最高的两个集合。经常我们都...原创 2014-03-06 16:17:04 · 77 阅读 · 0 评论 -
生产者消费者模式之我的理解
我发现不管从什么话题,都能扯到Thread上面,例如: 同步-》安全-》多线程, Core Java-》IO-》多线程, 框架-》底层-》多线程, 这样的话题导致最后的结束点,往往集中在多线程,虽然实际开发中线程级的编程,普通程序员几乎碰不到,但是还是需要我们有所了解。 找了一个生产者/消费者模式的例子,线程的很多功能的问题,都可以由它来阐述。这个例子可以用List,Stack等多种...原创 2014-03-07 15:07:48 · 82 阅读 · 0 评论