数据结构理论基础学习
文章平均质量分 82
涉及内容包括大——话数据结构、算法设计与分析基础、数据结构与算法之美,结合每一个章节的知识做出自己的思考与总结!
Javan Lu
这个作者很懒,什么都没留下…
展开
-
排序算法(上:冒泡、插入、选择)
冒泡、插入、选择一、几种经典排序算法及其时间复杂度级别二、如何分析一个排序算法?三、冒泡排序四、插入排序五、选择排序六、思考一、几种经典排序算法及其时间复杂度级别冒泡、插入、选择 O(n^2) 基于比较快排、归并 O(nlogn) 基于比较计数、基数、桶 O(n) 不基于比较二、如何分析一个排序算法?1.学习排序算法的思路?明确原理、掌握实现以及分析性能。2.如何分析排序算法性能?从执行效率、内存消耗以及稳定性3个方面分析排序算法的性能。3.执行效率:从以下3个方面来衡量1)最好情况、最坏原创 2021-09-08 15:31:26 · 118 阅读 · 0 评论 -
队列的学习
队列一、什么是队列?二、如何实现队列?三、队列有哪些常见的应用?一、什么是队列?1.先进者先出,这就是典型的“队列”结构。2.支持两个操作:入队enqueue(),放一个数据到队尾;出队dequeue(),从队头取一个元素。3.所以,和栈一样,队列也是一种操作受限的线性表。二、如何实现队列?1.队列APIpublic interface Queue {public void enqueue(T item); //入队public T dequeue(); //出队public int s原创 2021-09-07 09:03:35 · 114 阅读 · 0 评论 -
递归的学习
递归一、什么是递归?二、为什么使用递归?递归的优缺点?三、什么样的问题可以用递归解决呢?四、如何实现递归?五、递归常见问题及解决方案六、如何将递归改写为非递归代码?七、调试递归:一、什么是递归?1.递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。2.方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。3.基本上,所有的递归问题都可以用递推公式来表示,比如f(n) = f(n-1) + 1;f(n) = f(n-1)原创 2021-09-07 08:59:28 · 252 阅读 · 0 评论 -
5.栈的学习
实现浏览器的前进和后退栈的基础知识空间复杂度时间复杂度设计一个支持增量操作的栈栈的应用栈在函数调用中的应用栈在表达式求值中的应用栈在括号匹配中的应用实现浏览器的前进和后退栈的基础知识先进先出,操作受限的线性表只允许在一端插入和删除数据。当某个数据集合只涉及在一端插入和删除数据,并且满足后进先出、先进后出的特性,这时我们就应该首选“栈”这种数据结构栈既可以用数组来实现,也可以用链表来实现。用数组实现的栈,我们叫作顺序栈,用链表实现的栈,我们叫作链式栈。空间复杂度不管是顺序栈还是链式栈,我们存储数据原创 2021-09-04 11:01:43 · 340 阅读 · 0 评论 -
4.链表的学习(下)
核心:写出链表代码LRU缓存设计中涉及链表操作在链表操作这里尤其要警惕指针丢失和内存泄露利用伪节点(哨兵节点)进行增删改边界条件的处理画图LRU缓存设计中涉及链表操作// 其中head为伪头部,tail为伪尾部,这是双向链表的常规操作!// 插入到头部(这里只能利用head) public void addToHead(DLinkedList node){ node.prev = head; node.next = head.next; head原创 2021-09-04 10:39:48 · 175 阅读 · 0 评论 -
3.链表的学习(上)
核心:掌握链表的基础知识、写出链表代码链表基础知识LRU缓存淘汰算法链表 VS 数组性能大比拼基于链表实现 LRU 缓存淘汰算法Leetcode 146. LRU 缓存机制链表基础知识LRU缓存淘汰算法链表(LinkedList)的一个经典应用场景就是LRU缓存淘汰算法。LRU最近最少未使用算法。在OS虚拟存储器那部分用到了该算法,根据程序的局部性原理,设计出了虚拟储存器,内个进程只被分配了几个内存块,当进程的内存块被占完之后,从硬盘上又重新读取了一个内存块的数据量。此时,哪个内存块的内容被换出去原创 2021-09-01 09:36:27 · 169 阅读 · 0 评论 -
2.数组的学习
核心:掌握数组基本概念数组基础知识关键词1: 线性表关键词2: 连续内存和相同类型的数据数组基础知识数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。关键词1: 线性表线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。而与它相对立的概念是非线性表,比如二叉树、堆、图等。之所以叫非线性,是因为,在非线性表中,数据之间并不是简单的前后关系。关键词2: 连续内存和相同类型的数据原创 2021-08-31 20:17:03 · 141 阅读 · 0 评论 -
1.大O法和复杂度的理解
数据结构和算法总体概览常用数据结构和算法复杂度分析大o法时间复杂度分析几种常见时间复杂度实例分析空间复杂度常用数据结构和算法数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法复杂度分析大o法算法执行效率,粗略的将就是算法代码的执行时间。从cpu的角度来看,每一行代码都执行的类似的操作:读数据-运算-写数据,一般而言每行代码对应的cpu执行个数、执行时间都不一样,这里假设执行时间原创 2021-08-31 20:00:52 · 230 阅读 · 0 评论