算法 Algorithms(第四版)
算法是计算机专业中一块难啃的骨头,我希望有小伙伴能够和我一起学习交流,在算法学习之路上结伴而行!
这个专栏是关于算法第四版书中所涉及到的部分算法的演示和重要思想,所有的算法用java语言实现。
我的水平有限,如果有差错的地方希望大家指出!
先谢过!
九术沫
我愿为你的梦想插上翅膀
展开
-
算法的时间复杂度分析---精确定义
K先生说,一个程序运行的时间由两点决定。每条语句执行的时间每条语句执行的频率以K先生的标准来讲,第一点取决于计算机的运算速度、第二点取决于所使用的的算法。所以第二点可以作为处理同一个问题的不同算法之间的比较标准。算法中语句被执行的最高频率称为该算法的时间复杂度,是算法之间在时间上的比较标准。...原创 2020-06-30 22:56:28 · 304 阅读 · 0 评论 -
时间估计---预测一个算法处理一定规模数据所需的时间
倍率实验倍率实验的数据表现形式实验规模实验耗时倍率(本次实验与上一次实验运行时间之比)NtT实验规模按N的倍数增长实验的数据来源于模拟随机生成实验的目的用于估计一个算法在处理一个很大的数量级的数据时的理论耗时。理论依据如果T(N)~a(N^b)lgN那么T(2N)/T(N)→ 2bT(2N)/T(N) \rightarrow\ 2^bT(2N)/T(N)→ 2b2^b也就是倍率实验的准备一个模拟数据生成器接原创 2020-06-24 22:47:17 · 1749 阅读 · 0 评论 -
Union-Find算法分析---几行代码的改进带来百万倍速率的提升
union-find 算法API方法作用public ClassName(int N)接收总触点数并初始化连通标识符和连通分量数public boolean connected(int p, int q)检测两个触点是否属于同一个分量public int size()返回连通分量总数public int find(int dot)查找一个触点的连通分量标识符public void union(int p, int q)将p,q所属的分量合并(合并原创 2020-06-24 21:03:20 · 345 阅读 · 3 评论 -
数组与链表---一对好朋友
数组和链表两种数据结构的对比数组: 优点是支持随机访问,缺点是空间大小一旦确定便不能改变。链表:优点是空间大小可以按需改变,缺点是数据不能随机访问。这两者的对比鲜明!运用对比—实现栈结构栈数据结构分别用数组和链表来实现。栈API方法作用public boolean isEmpty()判断栈是否为空public int size()判断栈中元素个数public Item pop()出栈public void push(Item item)原创 2020-06-21 16:44:26 · 129 阅读 · 0 评论 -
迭代性质---让数据遍历格式化
迭代特性要使一个类可迭代需要实现 Iterable 接口实现 public Iterator<E> iterator() 方法并写一个内部类来实现iterator接口实现 public boolean hasNext() 方法实现 public E next()方法 E是泛型,类的代表源代码以下是ArrayList 关于迭代部分的代码//实现Iterable 需要实现方法public Iterator<E> iterator() {原创 2020-06-21 16:07:42 · 152 阅读 · 0 评论 -
双栈----计算字符串算式
栈的运用用双栈对输入的字符串算式进行运算算法要点将操作数压入操作数栈将运算符压入运算符栈忽略左括号遇到右括号,弹出一个运算符,弹出与运算符对应的操作数个数,并将运行结果压入操作数栈栈的类图栈内包含了两个内部类,Node和ReverseIterator。前者是节点的数据类型,后者是自定义的迭代类型实现了Iterator接口。实现public class Evaluate { public static void main(String[] args) { Sta原创 2020-06-21 15:14:56 · 180 阅读 · 0 评论 -
泛型——让你的代码更包容
泛型泛型是所有类的抽象代表,一种占位符,表示存在一种类,但不确定具体是哪一个类。例子定容栈 FixedCapacityStackOfString—存储对象是字符串 FixedCapacityStack—泛型Item代表储存对象类图 红框显示出二者的区别现实://FixedCapacityStackOfS原创 2020-06-20 18:26:43 · 104 阅读 · 0 评论