![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 88
坏坏也童鞋
编程爱好者
展开
-
常见排序算法汇总与分析(上)(交换排序与插入排序)
每每遇到关于排序算法的问题总是不能很好的解决,对一些概念,思想以及具体实现的认识也是模棱两可。归根结底,还是掌握不够熟练。以前只是看别人写,看了就忘。现在打算自己写,写些自己的东西,做个总结。所以就有了这“常见排序算法汇总与分析”上中下三部曲。 本篇是这个汇总的开始,我们先来解决一些问题。 首先,排序是什么意思,大家应该都知道。但是排序涉及到一个概念,叫排序稳定性。那么稳定性是什么意思呢? 稳定性:就是有两个相同的元素,排序后它们相对位置是否发生变化,若未变化则该称该排序算法是稳定的。否则就是不稳定的原创 2016-09-17 15:21:26 · 1537 阅读 · 0 评论 -
常见排序算法汇总与分析(中)(选择排序与归并排序)
之前我们已经对常用排序算法中的交换排序与插入排序做了详细的汇总与分析,如果有还没有阅读过的,可以先去看看常见排序算法汇总与分析(上)(交换排序与插入排序) 这一篇我们来对选择排序中的直接选择排序与堆排序,以及常用的归并排序做一个汇总。 选择排序 直接选择排序 【基本思想】 每一趟在待排序列中选出最小(或最大)的元素,依次放在已排好序的元素序列后面(或前面),直至全部的元素排完为止。 直接选择排序也称为简单选择排序。首先在待排序列中选出最小的元素,将它与第一个位置上的元素交换。然后选出次小的元原创 2016-09-19 16:16:12 · 1057 阅读 · 0 评论 -
常见排序算法汇总与分析(下)(基数排序与计数排序)
本篇汇总的算法将不再是基于比较的排序算法,因此会突破这类算法的时间复杂度下界O(nlog2n)。如果有朋友对前面的内容感兴趣,可以先去看看常见排序算法汇总与分析(中)(选择排序与归并排序) 我们先来总结基数排序算法,该算法在排序过程中不进行比较,而是通过“分配”和“收集”两个过程来实现的。 基数排序 【基本思想】 首先设立r个队列,对列编号分别为0~r-1,r为待排序列中元素的基数(例如10进制数,则r=10),然后按照下面的规则对元素进行分配收集 1,先按最低有效位的值,把n个元素分配到上述的原创 2016-09-19 16:18:56 · 2772 阅读 · 0 评论 -
详细解读KMP模式匹配算法
首先我们需要了解什么是模式匹配? 子串定位运算又称为模式匹配(Pattern Matching)或串匹配(String Matching)。在串匹配中,一般将主串称为目标串,将子串称为模式串。本篇博客统一用S表示目标串,T表示模式串,将从目标串S中查找模式串T的过程称为模式匹配。 虽然我们的主角是KMP模式匹配算法,但我们还是要先从暴力匹配算法讲起,通过发现暴力匹配算法存在的问题,由此来引出KMP模式匹配算法。原创 2016-09-30 16:54:11 · 27560 阅读 · 4 评论 -
A*寻路算法详细解读
文章目录A*算法描述简化搜索区域概述算法步骤进一步解释具体寻路过程模拟需要更新F值的情况Lua代码实现 在学习A*算法之前,很好奇的是A*为什么叫做A*。在知乎上找到一个回答,大致意思是说,在A*算法之前有一种基于启发式探索的方法来提高Dijkstra算法的速度,这个算法叫做A1。后来的改进算法被称为A*。*这个符号是从统计文献中借鉴来的,用来表示相对一个旧有标准的最优估计。 启发式探索是利用...原创 2019-04-10 14:02:05 · 1203 阅读 · 2 评论