
笔记_数据结构和算法
数据结构和算法
剑来~
这个作者很懒,什么都没留下…
展开
-
数据结构与算法、第八篇:递归
参考文献https://blog.youkuaiyun.com/rocling/article/details/81193431极客时间王争:数据结构与算法一、什么是递归递归,就是一个函数直接或间接调用自身的一种方式,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模大小的问题来求解。举例递归----->查字典当你要查一个词,发现这个词的解释中的某个词依旧不懂,于是你开始查第二...原创 2019-11-07 18:26:46 · 430 阅读 · 0 评论 -
链表CODE:反转链表
链表反转实现效果输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL实现代码 public LinkNode reverseList(LinkNode head) { LinkNode prev = null; //翻转后新的链表 LinkNode c...原创 2019-08-28 14:36:18 · 141 阅读 · 0 评论 -
数组CODE:动态数组
package com.wendao.test.array;import javax.validation.constraints.Max;import java.util.Arrays;public class ArrayList<E> { //数组中元素的数量(不是数组的长度,也不是数组中最后一个元素的下标) private int size; /...原创 2019-08-22 15:35:48 · 238 阅读 · 0 评论 -
数据结构与算法、第七篇:队列
队列什么是队列先进者先出,这就是典型的队列。 队列和栈一样,也是一种操作受限的线性表数据结构队列的操作入队和出队入队:放一个数据到队列尾部出队:从队列头部取一个元素队列的分类顺序队列和链式队列用数组实现的队列叫作顺序队列用链表实现的队列叫作链式队列队列的应用循环队列、阻塞队列、并发队列基于数组的实现方法// 用数组实现的队列public class A...原创 2019-08-21 16:36:09 · 147 阅读 · 0 评论 -
链表CODE:链表的实现
链表实现的技巧:理解指针或引用的含义将变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到变量。java与指针对应的是引用警惕指针丢失和内存泄漏指针操作的时候一定要注意顺序,比如:p->next = x; // 将 p 的 next 指针指向 x 结点;x->next = p->nex...原创 2019-08-23 18:16:11 · 182 阅读 · 0 评论 -
数据结构与算法、第六篇:栈
栈定义 :后入者先出,先入者后出,这就是典型的栈结构特性:栈是一种操作受限的线性表,只允许在一端插入和删除数据,入栈和出栈分类:栈既可以用数组来实现,也可以用链表来实现1. 顺序栈:用顺序实现的栈称为顺序栈 2. 链式栈:用链表实现的栈称为链式栈适用场景:当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出,先进后出的特性,就应该首选“栈”这种数据结构如何实现一个栈顺...原创 2019-08-19 13:31:42 · 188 阅读 · 0 评论 -
数据结构与算法、第三篇:时间复杂度(下)
复杂度分析最坏情况时间复杂度:代码在最理想情况下执行的时间复杂度最好情况时间复杂度:代码在最坏情况下执行的时间复杂度平均时间复杂度:用代码在所有情况下执行的次数的加权平均值表示均摊时间复杂度:在代码执行的所有复杂度情况中绝大部分是低级别的复杂度,个别情况是高级别复杂度且发生具有时序关系时,可以将个别高级别复杂度均摊到低级别复杂度上。基本上均摊结果就等于低级别复杂度为什么要引入这4个概...原创 2019-07-26 10:45:39 · 257 阅读 · 1 评论 -
数据结构与算法、第二篇:复杂度分析(上)
事后统计法1.测试结果非常依赖测试环境2.测试结果受数据规模的影响很大我们需要一个不用具体的测试数据来测试,就可以粗略的估计算法的执行效率的方法一、什么是复杂度分析?数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能。分别用时间复杂度和空间复杂度两个概念来描述性能问题,二者统称为复杂度。复杂度描述的是算法执行时间...原创 2019-07-26 10:43:11 · 249 阅读 · 0 评论 -
数据结构与算法、第一篇:简介
1.什么是数据结构?什么是算法?广义:数据结构是指一组数据的存储结构。算法就是操作数据的一组方法狭义:是指某些著名的数据结构和算法,比如队列、堆、栈、二分查找、动态规划等。这些都是前人智慧的结晶,我们可以直接拿来用图书储藏书籍、图书管理员一般会将书籍分门别类进行存储。按照一定规律编号,就是书籍这种数据的存储结构,那我们如何来查找一本书呢?有很多方法,你当然可以一本一本地找,也可以先根...原创 2019-07-26 10:38:14 · 115 阅读 · 0 评论 -
数据结构与算法、第五篇:链表
为什么使用链表(对比数组)数组的缺陷:数组需要一块连续的内存空间来存储,对内存的要求高。如果我们申请一块100MB的数组,当内存中没有连续的、足够大的空间时,即便内存的剩余总可用空间大于100MB,依然会申请失败链表的优势:链表并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用,所以我们申请的是100MB的链表的话,没有问题链表链表:是一种线性表。通过指针将一组...原创 2019-07-30 15:29:43 · 216 阅读 · 0 评论 -
数据结构与算法、第四篇:数组
线性表:数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。例如:数组,链表,队列,栈都是线性表结构非线性表:数据之间并不是简单的前后关系。例如:二叉树、堆、图等数组概念:数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。特性:由于数组有连续的内存空间和相同类型的数据这两个限制,使得数组有随机访问这个特点。弊端...原创 2019-07-30 15:25:45 · 151 阅读 · 0 评论