![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
回顾数据结构特性,记录学习经验,了解其原理本质。
爱发呆de白菜头
从事视觉SLAM,研究基于单目, 单目+IMU,RGB-D的SLAM算法, 有时侧重三维重建(地图, 渲染,分割,识别等), 有时侧重定位(VO,VIO等)。
展开
-
数据结构与算法第十一节:排序算法之线性排序(桶排序、计数排序、基数排序)
1. 常用经典排序算法冒泡排序、插入排序、选择排序; O(n^2)快速排序、归并排序; O(nlogn)计数排序、基数排序、桶排序; O(n)原创 2019-11-28 22:28:37 · 136 阅读 · 0 评论 -
数据结构与算法第十节:排序算法之归并、快速排序
1. 常用经典排序算法冒泡排序、插入排序、选择排序; O(n^2)快速排序、归并排序; O(nlogn)计数排序、基数排序、桶排序; O(n)2. 归并排序3. 快速排序...原创 2019-11-28 22:23:02 · 214 阅读 · 0 评论 -
数据结构与算法第九节:排序算法之冒泡、插入和选择排序源代码解析
1. 常用经典排序算法冒泡排序、插入排序、选择排序; O(n^2)快速排序、归并排序`; O(nlogn)计数排序、基数排序、桶排序; O(n)2. 源代码例程冒泡排序插入排序选择排序...原创 2019-11-28 22:19:39 · 133 阅读 · 0 评论 -
数据结构与算法第八节: 排序算法
1. 常用经典排序算法冒泡排序、插入排序、选择排序; O(n^2)快速排序、归并排序; O(nlogn)计数排序、基数排序、桶排序; O(n)2. 如何评价和分析一个排序算法的效率排序算法的执行效率分析(1). 最好情况、最坏情况、平均情况时间复杂度对于不同有序度的数据,排序的执行时间不一样.在分析排序算法的时间复杂度时,分别给出最好情况、最坏情况、平均情况下的时间复杂度...原创 2019-11-26 10:44:35 · 127 阅读 · 0 评论 -
数据结构与算法第7节: 递归的使用
难点问题: 递归, 动态规划1.递归需要满足的三个条件一个问题的解可以分解为几个子问题的解;何为子问题?子问题就是数据规模更小的问题。这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样;分解成的子问题与母问题求解思路一致存在递归终止条件;求解的问题有初始值,或者其他终止条件;写递归代码的关键就是找到如何将大问题分解为小问题的规律,并且基于此写出递推公式,...原创 2019-11-14 21:25:58 · 143 阅读 · 0 评论 -
数据结构与算法第五、六节:栈和队列
数据结构与算法第五节:栈的使用特定的数据结构是对特定场景的抽象。栈是一种“操作受限”的线性表,只允许在一端插入和删除数据; 先进后出当某个数据集合只涉及在一端的插入和删除数据, 并且满足后进先出, 先进后出的特性,我们就应该首选“栈”这种数据结构.栈既可以数组来实现(顺序栈), 也可以用链表来实现(链式栈)。基于数组实现的栈// 基于数组实现的顺序栈public cla...原创 2019-11-13 10:59:09 · 292 阅读 · 0 评论 -
数据结构与算法第四节:链表的使用
链表(Linked list)用空间换时间当内存空间充足的时候,如果我们更加追求代码的执行速度,我们就可以选择空间复杂度相对较高、但时间复杂度相对很低的算法或者数据结构。如果内存比较紧缺,比如代码跑在手机或者单片机上,这个时候,就要反过来用时间换空间的设计思路。缓存清除先进先出策略(FIFO), 最少使用策略(LFU), 最近最少使用策略(LRU)1.链表的种类单链表: ...原创 2019-11-11 21:30:38 · 142 阅读 · 0 评论 -
数据结构与算法第三节:数组的使用
1. 数组的定义数组(Array): 是一种线性表数据结构,它用一组连续的内存空间,来储存一组具有相同类型的数据。(数组的特性: “线性表”, “连续的”, “相同类型”)。线性表: 就是数据排成像一条线一样的结构。 每个线性表的数据最多只有前和后两个方向。ps: 数组、链表、队列都是线性表结构。其结构和简单特性如下图所示:ps: 除了线性表,还有非线性表: 二叉树、堆、图等,如下...原创 2019-11-08 11:15:15 · 132 阅读 · 0 评论 -
数据结构与算法第二节:衡量算法的执行效率(时间、空间复杂度分析)(2)
1. 最好、最坏、平均、均摊时间复杂度对比分析代码案例3实际分析: // n表示数组array的长度 int find(int[] array, int n, int x) { int i = 0; int pos = -1; for (; i < n; ++i) { if (array[i] == x) pos = i; break; } ...原创 2019-11-07 11:14:01 · 219 阅读 · 0 评论 -
数据结构与算法第二节:衡量算法的执行效率(时间、空间复杂度分析)
数据结构与算法解决“快”, “省”问题, 即如何让程序更快, 让代码占用空间更少。事后统计法通过实际运行测试代码的执行时间和占用内存等大小来对算法进行评估的方法, 城其为事后统计法, 这种方法具有非常大的局限性。具体体现为以下两点(1). 测试结果非常依赖测环境: 如在不同性能的机器上具有不同的运行速率;(2). 测试结果受数据规模的影响: 如同一个排序算法,待排序数据的有序度不...原创 2019-11-06 10:45:53 · 564 阅读 · 0 评论 -
数据结构与算法第一节:数据结构与算法的关系
学习《数据结构与算法之美》记录相关知识点, 但不局限于这门课程,遇到不熟悉不理解的点,搜集网上资料,继续学习。学好数据结构是熟练使用和解决算法问题的核心,也是最重要的基本能力.1. 数据结构与算法的关系广义上数据结构就是指一组数据的存储结构,算法就是操作一组数据的方法;狭义上10个常见数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10 个常用...原创 2019-11-05 10:23:45 · 884 阅读 · 0 评论 -
KdTree && Octree 原理学习对比以及可视化分析--"索引树"
1. Kdtree 原理k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索);索引结构中相似性查询有两种基本的方式:(1). "范围查询" :给定查询点和查询距离的阈值,从数据集中找出所有与查询点距离小于阈值的数据;(2). "K近邻查询" :K近邻查询是给定查询点及正整数K,从数据集中找到...原创 2019-07-18 14:27:31 · 1532 阅读 · 1 评论