数据结构学习笔记4.2--插入节点
摘要:插入一个节点,首先要找到插入的地方。需要从根节点开始,找到需要插入节点的父节点, 如果插入节点比父节点小,则插入到左子节点处;如果插入节点比父节点大,则插入到右子节点处。 图解:根据二叉树的节点的特点,找到插入节点的位置。 代码: /** * 插入节点,跟查找节点代码类似,只是在遇到null时,将节点插入,修改引用 * @param id...
阅读全文
posted @
2014-01-27 23:10
winlrou
阅读(903)
推荐(0)
数据结构学习笔记4.1--查找节点
摘要:有序数组的优点: 在有序数组中查找数据可以用二分查找法,用这个方法在查找时效率很高,所需时间是0(logN), 然而在插入或者删除数据时,需要平均移动N/2项数据,如果需要做很多的插入删除操作,就不应该用有序数组。 链表的优点: 链表在插入或者删除时,操作很快,只需要修改对前一个节点的引用,修改后一个节点的引用,就能完成,所需时间复杂度为O(1), 但是在查找数据是,需要链表头开始...
阅读全文
posted @
2014-01-27 21:33
winlrou
阅读(588)
推荐(0)
数据结构学习笔记3.2—快速排序
摘要:快速排序是目前最流行的算法,在大多数情况下,快速排序都是最快的,执行时间为O(N*logN)。 快速排序本质上是通过把一个数组划分为两个子数组,然后在递归调用自身对每一个字数组进行快速排序。 即数组划分为字数组A,B,在对A进行划分为A1,A2,对A1划分为A11,A12。。B也是如此执行,这就涉及到递归调用自身的操作。 1.取右值作为枢纽的情形 /** * 快速排序...
阅读全文
posted @
2014-01-21 23:51
winlrou
阅读(303)
推荐(0)
数据结构学习笔记3.1--划分
摘要:划分是快速排序的根本机制,主要是把数组分为两组:小于关键字的数据项在一组,大于关键字的数据项在一组。 /** * 划分数据 * * @param left 左边数据 * @param right 右边数据 * @param pivot 参照值 * @return */ public static int partiti...
阅读全文
posted @
2014-01-15 00:07
winlrou
阅读(257)
推荐(0)
数据结构学习笔记2--希尔排序
摘要:希尔排序比简单排序快得多,大约需要O(N×(logN)2)的时间,而且容易实现。希尔排序是基于插入排序,只是希尔排序不是比较相邻的数据,而是比较一定间隔的两个数据。 我们在选择排序算法时,基本上都可以使用希尔排序,如果有特殊要求或者算法不够快,在选择其他的排序算法。我们从插入排序的缺陷入手,看看问题: 问题: 插入排序思路:在标记符左边的数据是已经排序的,而右边的数据是没有排序,它有一个临时...
阅读全文
posted @
2014-01-02 22:42
winlrou
阅读(374)
推荐(0)