
数据结构与算法
LiuQQu
这个作者很懒,什么都没留下…
展开
-
数据结构与算法之美 课程笔记一 如何抓住重点,系统高效地学习数据结构与算法?
什么是数据结构?什么是算法?从广义上讲,数据结构就是指一组数据的存储结构。算法就是操作数据的一种方法。从狭义上讲,是指某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。那数据结构和算法有什么关系呢?数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。学习的重点是什么?首先要掌握一个数据结构与算法中最重要的概念——复杂度分析。...原创 2018-11-29 16:36:34 · 459 阅读 · 0 评论 -
数据结构与算法之美 课程笔记二 复杂度分析(上)
数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省空间。所以,执行效率是算法一个非常重要的考量指标。衡量算法的执行效率最常用的就是时间和空间复杂度分析。一、为什么需要复杂度分析?把代码跑一遍,通过统计、监控来得到算法执行的时间和占用的内存大小,这种做法叫做事后统计法。事后统计法有非常大的局限性:1、测试结果非常依赖测试环境。测试环境中硬件的不同会...原创 2018-11-29 16:36:16 · 276 阅读 · 0 评论 -
数据结构与算法之美 课程笔记三 复杂度分析(下)
一、最好、最坏情况时间复杂度(best case time complexity,worst case time complexity)// n表示数组array的长度int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (...原创 2018-11-29 16:36:04 · 219 阅读 · 0 评论 -
数据结构与算法之美 课程笔记四 数组
问题:为什么很多编程语言中数组都从0开始编号?一、如何实现随机访问?数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。几个关键词:1、线性表(Linear List)线性表是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。除了数组,链表、队列、栈等也是线性表结构。与它相对立的是非线性表,比如二叉树、堆、图等。在非线性表中,...原创 2018-11-29 16:35:54 · 406 阅读 · 2 评论 -
数据结构与算法之美 课程笔记六 链表(下)如何轻松写出正确的链表代码?
技巧一:理解指针或引用的含义将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存指针,指向了这个变量,通过指针就能找到这个变量。p->next = q, 表示p结点的next指针存储了q结点的内存地址。p->next = p->next->next,表示p结点的next指针存储了p结点的下下一个结点的内存地址。...原创 2018-11-29 17:50:54 · 239 阅读 · 0 评论 -
如何用循环单链表解决约瑟夫问题?
约瑟夫问题:人们站在一个等待被处决的圈子里。 计数从圆圈中的指定点开始,并沿指定方向围绕圆圈进行。 在跳过指定数量的人之后,执行下一个人。 对剩下的人重复该过程,从下一个人开始,朝同一方向跳过相同数量的人,直到只剩下一个人,并被释放。问题即,给定人数、起点、方向和要跳过的数字,选择初始圆圈中的位置以避免被处决。历史:Josephus有过的故事:39 个犹太人与Josephus及他的...原创 2018-11-27 14:27:25 · 702 阅读 · 0 评论 -
数据结构与算法之美 课程笔记五 链表(上)
问题:如何用链表来实现 LRU 缓存淘汰策略呢?缓存的大小有限,当缓存被用满时,那些数据应该被清理出去,那些数据应该被保留?这就需要淘汰策略来决定。常见的策略有三种:先进先出策略FIFO(First In,First Out)、最少使用策略LFU(Least Frequently Used)、最近最少使用策略LRU(Least Recently Used)。一、五花八门的链表结构...原创 2018-11-29 16:35:41 · 285 阅读 · 0 评论