算法第四版-学习
文章平均质量分 71
琴瘦
大学毕业三年后,想一想上学还是有用的,原因是:从学校中我们学到了解决问题的方法,而这些方法将对我们以后的生存有着很大的帮助,而生存又是做其他想做的事的必要条件。
展开
-
union-find下(加权quick-union)算法
声明: 主要代码和部分算法说明参考自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。1.前言在上一篇文章中,提到了quick-union算法的一个需要改进的地方,就是在union方法中,树的归并是随机的。如果我们规定节点数小的树总是归并到节点数大的树中,这样就会很大程度上减小树的深度,从而提高查找效率。2.思路创建一个数组,该数组保存的是各个触点的树的节点数,数组以触点为索引。3.代码原创 2017-12-20 11:04:07 · 591 阅读 · 0 评论 -
Java下压栈实现-可调整数组大小(p88)
声明: 主要代码选自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。1.前言先说个小疑问 我们知道集合想要实现迭代,就必须实现Iterable接口,然后重写iterator()方法,从而返回Iterator对象,最后再利用Iterator对象的hasNext()方法和next()方法实现迭代,那么为什么不直接实现Iterator接口呢? 原因是: 因为Iterator接口的核心方原创 2017-12-13 11:25:09 · 473 阅读 · 0 评论 -
Eclipse输入重定向
点击run->run configurations->common 再点击Arguments 然后点击apply 最后运行即可。注: 结束输入流的快捷键是:ctrl+z原创 2017-12-14 12:28:52 · 1315 阅读 · 0 评论 -
Java下推栈-链表实现(p94)
声明: 主要代码参考自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。实现思路1.创建下推栈类 2.定义基本属性和方法 3.定义嵌套节点类 4.定义压栈和弹栈的方法实现步骤1. 创建下推栈类并使其支持迭代//用链表实现下压栈 p149 public class Stack<Item> implements Iterable<Item>实现iterator()方法,并且创建内部原创 2017-12-14 12:16:06 · 336 阅读 · 0 评论 -
希尔排序
声明: 主要代码和部分算法说明参考自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。1.简介希尔排序建立在插入排序的基础上,不同的是,希尔排序交换不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序。2.思路如果现在有个大小为16的整形数组: Integer[] a = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; 首先我们原创 2017-12-26 09:26:07 · 243 阅读 · 0 评论 -
插入排序
声明: 主要代码和部分算法说明参考自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。1.准备为了让把精力放在算法的实现上,所以需要做一些准备工作,书写一些模板代码,这些代码。import edu.princeton.cs.algs4.In; import edu.princeton.cs.algs4.StdOut;//p153 排序算法类的模板 public class Exampl原创 2017-12-25 10:13:09 · 169 阅读 · 0 评论 -
union-find上(quick-find)算法
声明: 主要代码和部分算法说明参考自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。1.前言先不多说上图,请大家仔细观察下面的图片(有玄机),看完之后我有非常深奥的问题想要问大家。 问题1: 数字0和数字1相连吗? 问题2: 数字2和数字3相连吗? 看到这里可能有人要在下面留言喷我,先等等,上面的图片大家一眼就会看出答案,但是那只是因为上面图片只有10个数字,但是如果有上原创 2017-12-17 10:04:40 · 724 阅读 · 0 评论 -
union-find中(quick-union)算法
声明: 主要代码和部分算法说明参考自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。1.前言鉴于quick-find需要在union方法中遍历整个数组,这样当数据庞大时,效率会非常低下,所以我们需要换一种思路,改良union方法。 注:quick-find算法请参考我的上一篇文章 http://blog.csdn.net/qq_32293345/article/details/78原创 2017-12-18 13:07:55 · 980 阅读 · 0 评论 -
快速排序
声明: 主要代码和部分算法说明参考自算法(第四版),这里将代码列出,是想和大家交流一些学习心得。1.思想快速排序在每一次的排序中都会完成两件事 1.找到基准数(常设为首元素)在序列中正确的位置 2.使基准数左边的序列的值都小于该基准数,基准数右边的序列的值都大于该基准数那么如何完成这两件事呢? 以如下序列为例 6 1 2 7 9 3 4 5 10 8 基准数:6 并且我们原创 2017-12-28 10:14:36 · 181 阅读 · 0 评论