算法
小瓶子的笔记本
这个作者很懒,什么都没留下…
展开
-
凸包算法(Convex Hull Algorithm)
凸包定义平面上 N 个点的凸包是包围这 N 个点的最小多边形 应用机器人运动路径规划:找到起点 S 到终点 T 之间的最短路径,而且需要避开一个多边形路障s 和 t 之间的最短路径就是 s 和 t 之间的直线距离,或者凸包中上下折线中的其中之一最远的两点:平面上有 N 个点,希望找到这 N 个点中,距离最远的那一个点对距离最远的那一对点,一定在凸包上属性在凸包上,可以只通过做逆时针转弯而遍历闭凸包以最小的 y 值点 p 为原点,与其他点的连线的极角逐渐增大原创 2020-09-27 10:08:27 · 7489 阅读 · 1 评论 -
乱序算法(shuffling algorithm)
文章目录问题基于排序的shuffling基于交换的shuffling问题shuffling 就是希望打乱一个基本有序的序列,越乱越好比如现在有一个已经排好序的 objects,以下面扑克牌为例:我们希望能够随机的打乱它的顺序,比如得到下面的序列:基于排序的shuffling我们可以为每一个数组中的元素随机的产生一个随机数,然后对随机数进行排序,排序的同时移动相应的数组中的元素,排序完成后,即可以实现数组中的元素乱序:基于交换的shuffling...原创 2020-09-24 09:27:40 · 2031 阅读 · 0 评论 -
并查集
文章目录1. 动态连接问题2. 解决思路3. 代码实现3.1 Quick Find1. 动态连接问题实际问题Union Find 常用来解决动态连接 (Dynamic connectivity) 问题。在很多实际应用中,都存在动态连接问题,比如:一张图里面的像素点的相关操作网络中的计算机社交网络中的好友关系数学集合中的元素…抽象问题简单来说,动态连接问题可以抽象为如下问题:有若 N 个节点 0,1,…,n-1,希望对它能有如下操作:Union:将两个节点连接在一起Fin原创 2020-09-12 15:54:52 · 304 阅读 · 0 评论 -
字符串全排列与组合算法以及八皇后问题
【剑指offer-题38】题目输入一个字符串,输出该字符串的全排列。思路数学中的排列组合思想。算法步骤如下:求出所有可能出现在第一个位置的字符。将首字符依次与后面的字符交换,即可达到此目的。确定完第一个位置的字符之后,后面的字符作为一个新的字符串,求其全排列,也就是递归算法。将某个字符与首字符交换,求解完它的所有全排列之后,需要将首字符放回原位,方便首字符与后面字符继续交换。实...原创 2020-03-03 12:20:56 · 280 阅读 · 0 评论 -
C++ STL源码分析——算法(二)
【侯捷-SL体系结构内核分析-算法】目录:count, count_iffind, find_ifsortcount, count_ifcount 源码template<class _InIt, class _Ty> _NODISCARD inline _Iter_diff_t<_InIt> count(const _InIt _First, cons...原创 2020-03-02 12:32:34 · 505 阅读 · 0 评论 -
排序算法总结
插入排序基本思想有N个数据data[N],从头到尾扫描数据data[i],将数据data[i]插入到前面已经排好序的data[0] — data[i-1]的合适位置处,即完成data[0] — data[i]的数据排序,直到数据末尾,结束排序。分类根据确定插入位置时选择的方法不同,可以分为直接插入排序,二分(折半)插入排序,希尔排序。1. 直接插入排序基本思想在确定插入位置时,利用顺...原创 2020-02-21 22:25:02 · 934 阅读 · 0 评论