
从零开始学数据结构与算法
从零开始数据结构与算法
SumeriZhanYg
这个作者很懒,什么都没留下…
展开
-
从零开始学数据结构与算法-八大排序算法(图解)
排序算法 时间复杂度和空间复杂度 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二步就是分析算法的时间复杂度。 度量一个程序的执行时间通常有两种方法: 一、事后统计的方法 二、事前分析估算的方法 在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们原创 2020-05-13 14:50:58 · 4616 阅读 · 2 评论 -
从零开始学数据结构与算法-递归
递归 递归是一种方法(函数)调用自己的编程技术。 斐波那契数列 public class TestFebonacci { public static void main(String[] args) { // 斐波那契数列: 1 1 2 3 5 8 13 System.out.println(febonacci(6)); } public static int febonacci(int i) { if (i == 1 || i == 2) { return 1; } re原创 2020-05-13 14:10:56 · 182 阅读 · 0 评论 -
从零开始学数据结构与算法-线性结构-链表
链表 链表数据结构可能是继数组结构之后第二种使用广泛的数据结构,它可以取代数组,作为其他存储结构的基础,例如栈、队列,除非需要使用下标随机访问各个数据,否则多处都可以使用链表替代 链接点(Link) 在链表中,每个数据项都被包含在“链结点”(Link)中。一个链结点是某个类的对象,这个类可以叫做 Link。每个Link对象中都包含一个对下一个链结点引用的字段(通常叫做 next) Link类定义的一部分,它包含了一些数据和下一个链结点的引用。这种类的定义有时叫做“自引用”式,因为它包含了和自己类型相同的原创 2020-05-13 13:49:25 · 211 阅读 · 0 评论 -
从零开始学数据结构与算法-线性结构-栈、队列
栈 栈只允许访问一个数据项,即最后插入的数据项。移除这个数据项才能访问倒数第二个插入的数据项。(后进先出) 数组实现栈 // 通过数组实现栈 public class StackX { private int maxSize; private long[] stackArray; private int top; public StackX(int size) { maxSize = size; stackArray = new long[maxSize]; top = -1; }原创 2020-05-13 10:07:35 · 172 阅读 · 0 评论 -
从零开始学数据结构与算法-线性结构-数组
数组 最熟知和最简单的线性结构那就是数组了。 线性查找数组中的元素 //线性查找数组中的元素 public class TestSearch { public static void main(String[] args) { int[] array = new int[]{1, 2, 3, 4, 5, 6}; int target = 5; int index = -1; for (int i = 0; i < array.le原创 2020-05-12 11:47:14 · 195 阅读 · 0 评论 -
从零开始学数据结构与算法-概述
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成的。 数据的存储结构: 顺序存储结构 – 数组就是顺序存储结构的典型代表。 链式存储结构 数据的逻辑结构: 集合结构:集合关系就类似于数学中的集合 线性结构:线性结构中的数据元素之间是一对一的关系 树形结构:树形结构中的数据元素之间存在一种一对多的层次关系 图形结构:图形结构的数据元素是多对多的关系 算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方.原创 2020-05-12 10:58:55 · 206 阅读 · 0 评论