随笔分类 -  算法与数据结构学习

学习算法与数据结构的一些笔记总结及个人理解
数据机构与算法学习(八)- 排序
摘要:一、如何分析一个“排序算法” 排序算法的执行效率 1. 最好情况、最坏情况、平均情况时间复杂度 第一,有些排序算法会区分,为了好对比做一下区分。第二,对于要排序的数据,有的接近有序有的接近无序。有序度不同的数据对于排序的执行时间肯定是有影响的,我们要知道在不同的数据下的性能表现。 2. 时间复杂度的 阅读全文

posted @ 2021-04-13 08:03 成长的皮球 阅读(68) 评论(0) 推荐(0) 编辑

归并排序
摘要:百度百科 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法的一个典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,在使子序列段间有序。若将两个有序表合并成一个有序表, 称为二路归并。 归并操作的工作原理如下: 第一步: 申请空间,使其大小为两个已经排 阅读全文

posted @ 2021-04-11 08:03 成长的皮球 阅读(67) 评论(0) 推荐(0) 编辑

选择排序
摘要:工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外 阅读全文

posted @ 2021-04-08 07:05 成长的皮球 阅读(44) 评论(0) 推荐(0) 编辑

插入排序
摘要:插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个之外的所有元素,内层循环对当前元素前面有序表进行待 阅读全文

posted @ 2021-04-07 07:53 成长的皮球 阅读(37) 评论(0) 推荐(0) 编辑

数据机构与算法学习(八)- 递归
摘要:递归需要满足三个条件 1. 一个问题的解可以分解为几个子问题的解 2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一致。 3. 存在递归终止条件 如何编写递归代码 最关键的是写出递推公式,找到终止条件,剩下将递推公式转化为代码 假如有n个台阶,每次可以跨1个台阶或者2个台阶,请问走这 阅读全文

posted @ 2021-04-06 08:02 成长的皮球 阅读(93) 评论(0) 推荐(0) 编辑

数据机构与算法学习(七)- 队列
摘要:一、如何理解队列 可以想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进先出,这就是典型的队列。 栈只支持两个基本操作:入栈和出栈。队列和栈非常相似,支持的操作也很有限,基本的操作也是两个:入队,放一个数据到队列尾部;出队,从队列头取一个元素。所以队列和栈一样,也是一种操作受限的线性表 阅读全文

posted @ 2021-03-15 18:36 成长的皮球 阅读(24) 评论(0) 推荐(0) 编辑

数据机构与算法学习(六)- 栈
摘要:一、如何理解栈 举例说明一下,就是一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。后进者先出,先进者后出,这就是典型的“栈”结构。 栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。当某个数据集合只涉及在一端插 阅读全文

posted @ 2021-03-15 17:55 成长的皮球 阅读(10) 评论(0) 推荐(0) 编辑

数据机构与算法学习(五)- 数组VS链表
摘要:时间复杂度 数组 链表 插入、删除 O(n) O(1) 随机访问 O(1) O(n) 数组在实现上使用的是连续的内存空间,可以借助CPU的缓存机制,预读数组中的数据,所以访问效率更高。而连败哦在内存中不连续,所以对CPU缓存不友好,没办法预读。 数组的缺点是大小固定,一经声明就会占用整块连续内存空间 阅读全文

posted @ 2021-03-15 14:36 成长的皮球 阅读(14) 评论(0) 推荐(0) 编辑

数据机构与算法学习(四)- 链表
摘要:数组和链表是两个非常基础、非常常用的数据结构。 两者的区别:从底层的存储结构来看,数组需要一块连续的内存空间来存储,对内存的要求比较高。而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用。 三种常见的链表结构:单链表、双链表和循环链表。 单链表 概念定义: 我 阅读全文

posted @ 2021-03-15 14:17 成长的皮球 阅读(31) 评论(0) 推荐(0) 编辑

DFS深度优先
摘要:visited = set() def dfs(node, visited): visited.add(node) #process current node here ... for next_node in node.children(): if not next_node in visited 阅读全文

posted @ 2021-03-03 21:38 成长的皮球 阅读(32) 评论(0) 推荐(0) 编辑

BFS广度优先
摘要:def BFS(graph, start,end): queue = [] queue.append(start) visited.add(start) while queue: node = queue.pop() visited.add(node) process(node) nodes = g 阅读全文

posted @ 2021-03-03 21:25 成长的皮球 阅读(23) 评论(0) 推荐(0) 编辑

分治模板
摘要:def divide_conquer(problem, param1, param2, ...) #recursion terminator if problem is None: print_result return #prepare data data = prepare_data(probl 阅读全文

posted @ 2021-03-02 22:23 成长的皮球 阅读(42) 评论(0) 推荐(0) 编辑

递归模板
摘要:def recursion(level, param1,param2, ...): #recursion terminator if level >MAX_LEVEL: print_result return #process logic in current level process_data( 阅读全文

posted @ 2021-03-02 22:09 成长的皮球 阅读(27) 评论(0) 推荐(0) 编辑

数据机构与算法学习(三)- 数组
摘要:数组的概念 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 根据定义里边的关键词详解数组定义。 第一是线性表。 线性表就是数据拍成像一条线一样的结构。每个线性表上的而数据最多只有前和后两个方向。第二个是连续的内存控件和相同类型的数据。 因为有这两个特点 阅读全文

posted @ 2021-02-08 11:31 成长的皮球 阅读(38) 评论(0) 推荐(0) 编辑

数据结构与算法学习(二)
摘要:复杂度分析 复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法的内容基本上就掌握了一半。 事后统计法 把代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用内存的大小。这样的话有很大的局限性。 1. 测试结果非常依赖测试环境 2. 测试结果受数据规模的影响很大 我们需要一个不用具体的测 阅读全文

posted @ 2021-01-24 09:04 成长的皮球 阅读(63) 评论(0) 推荐(0) 编辑

数据结构与算法学习(一)
摘要:如何系统高效的学习数据库结构 首先要掌握一个数据结构与算法中最重要的概念 复杂度分析。 数据结构和算法解决的是如何更省更快的存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。 其次总结了20个最常用、最基础数据结构与算法。 10个数据结构:数组、链表、栈、队列 阅读全文

posted @ 2021-01-17 08:11 成长的皮球 阅读(56) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示