算法基础
淼叔
资深架构师,PMP、OCP、CSM、HPE University讲师,EXIN DevOps Professional与DevOps Master认证讲师,曾担任HPE GD China DevOps & Agile Leader,帮助企业级客户提供DevOps咨询培训以及实施指导。熟悉通信和金融领域,有超过十年金融外汇行业的架构设计、开发、维护经验,在十几年的IT从业生涯中拥有了软件开发设计领域接近全生命周期的经验和知识积累,著有企业级DevOps技术与工具实战。
展开
-
基础算法:最大回文长度
这篇文章介绍一下最大回文字符串长度的一种计算方法。原创 2020-11-04 22:03:32 · 920 阅读 · 0 评论 -
算法基础:快排:作弊神器qsort使用指南
快速排序是经典排序之一,传统的快排通过基准值不断就位的递归分割就完成了快速排序,但是快排是一个不稳定的排序,在遭遇到大数量的已经有序的输入序列的情况时,其好不容易降下来的nlogn的复杂度会重新恶化回n平方。而把这些都考虑了之后的快排就会几乎面目全非,c语言中的qsort或者c++中的sort,就是已经这样快看不出原貌的快排算法,调用其可以达到绕开很多基础算法考试的出题人的目的,堪称作弊神器。CJX,拿走不谢。原创 2020-11-02 18:54:15 · 784 阅读 · 0 评论 -
算法基础:快排优化:为什么qsort会这么快
这篇文章走马观花地学习一下qsort的源码,来看一下为何qsort比我们自己写的快排会快这么多。原创 2020-11-02 06:54:39 · 2568 阅读 · 1 评论 -
算法基础:使用动态规划法解决最长上升子序列问题
这篇文章继续介绍使用动态规划法解决LIS问题的方法。原创 2020-11-01 18:59:43 · 1446 阅读 · 0 评论 -
算法基础:快排优化:为什么快排都会TLE
在算法训练中,快排应该是基础中的基础了,直接使用前面介绍的快排,无论是单向循环还是双向循环方式,在特定的数据序列下,都有可能出现TLE(Time Limit Exceeded)超时,这篇文章对原因和基准值的优化进行验证和总结。原创 2020-11-01 17:10:38 · 1459 阅读 · 1 评论 -
算法基础:动态规划数组中滚动数组的使用
这篇文章继续在前一篇文章的基础上介绍动态规划数组的优化方式。很多基础算法本来都是写给我家的小少年看的,结果发现后浪学习的速度远远超出我的想象,在一个周末用这篇文章来纪念一下吧。原创 2020-11-01 09:11:08 · 782 阅读 · 0 评论 -
算法基础:从斐波那契数列的计算理解动态规划数组的作用
这篇文章以Fibonacci数列计算的递归实现使用动态规划法的优化为例,对动态规划方式所能起到的作用进行说明。原创 2020-10-31 10:07:37 · 686 阅读 · 0 评论 -
C基础:程序执行时间的计算方法的三种方式
这篇文章介绍一下在C或者C++中计算程序执行时间的三种常见方法。原创 2020-10-31 09:25:25 · 7443 阅读 · 0 评论 -
常见经典排序算法总结
算法几乎是每个软件从业者都会或多或少需要接触的内容,而排序则是算法中最基础的内容,这篇文章整理了常见的经典排序算法,并对于算法的实现和要点进行整理。原创 2020-10-29 19:42:12 · 374 阅读 · 0 评论 -
算法基础:排序算法:希尔排序
希尔排序是一个年过花甲的排序算法,是最早一批冲进时间复杂度n平方之内的算法之一,本质上是插入算法的优化。由Shell-Metzner在1959年所提出,在很长一段时间内都是以希尔排序命名,像我这样的古老的程序员念书的时候,这个排序还是被称为希尔排序的。据说希尔本人认为这个算法不应该以他的名字命名,如果根据希尔排序的原理或者实现方式来命名的话,它可能会被命名为“一种优化的插入排序算法”或者“一种改进的增量递减的插入排序改进算法”,虽然这更像一个专利的名称。这篇文章继续介绍一下希尔排序的主要要点和实现。原创 2020-10-29 06:25:51 · 370 阅读 · 0 评论 -
算法基础:排序算法:快速排序
快速排序的整体的思路也非常优秀,相较于冒泡选择还是插入的平均时间复杂度都是达到了O(n平方),而快速排序也是降至 O(nlogn),而且相较于归并排序对于空间的额外需求O(n),快速排序这方面也没有问题。唯一的一个问题可能在于由于存在非临元素的交换,可能会产生不稳定性,所以快速排序是不稳定的排序。这篇文章介绍一下归并排序的主要要点和实现,也是比较不错的一个排序算法,深受很多高校老师和面试官的青睐。原创 2020-10-29 05:30:00 · 423 阅读 · 0 评论 -
算法基础:排序基础:分区算法之单向循环法
前一篇文章中介绍了快排的核心分区算法的双向循环法的实现,分区算法将待排序列根据基准值进行分区,形成整体有序局部无序的结果特征,加之每次执行都会使序列中的基准值就位,非常简洁和有效。双向循环虽然理解简单,但是实现稍微繁琐(虽然之后十来行,但是毕竟是经典算法,还是可以利用别的方式进一步的简化),这篇文章继续介绍一下另外一种方式:单向循环法。原创 2020-10-29 04:43:59 · 1738 阅读 · 0 评论 -
算法基础:排序基础:分区算法之双向循环法
分区算法也被称为分割算法,实际上它是快速排序的核心内容,此部分内容如果理解了,快排就剩下一个三行的递归套路需要写了。这篇文章来介绍一下快排的内核:分区算法。原创 2020-10-29 04:12:30 · 634 阅读 · 0 评论 -
算法基础:排序算法:计数排序
计数排序也被称为桶排序或者箱排序,都是它和常规的桶排序还是有较为明显的区别,在这篇文章中还是使用计数排序的称呼。计数排序可以进一步将排序的时间复杂度降低到O(n),而且也可以是稳定的排序,理解起来也很容易,实现简单。它算是空间换时间策略的代表之一,空间消耗过大,受排序序列的影响极大,能够排序的场合受限,这些也都是计数排序的阿喀琉斯之踵(或许类比失当,计数排序也很难称得上是排序之中的阿喀琉斯)。原创 2020-10-27 06:49:25 · 558 阅读 · 0 评论 -
算法基础:排序算法:归并排序
归并排序相较于冒泡、选择与插入排序,理解和实现起来稍微有一点点麻烦的排序算法。但是整体的思路非常优秀,无论是冒泡选择还是插入的平均时间复杂度都是达到了O(n平方),而归并排序则成功的将其降至 O(nlogn)。这篇文章介绍一下归并排序的主要要点和实现,是比较不错的一个排序算法。原创 2020-10-26 20:29:01 · 299 阅读 · 0 评论 -
算法基础:排序算法:插入排序
插入排序也是非常容易理解的排序算法,这篇文章介绍一下排序的主要要点和实现,插入排序的主要做法是外层循环中选定插入元素,内层循环移动并空出插入位置,返回外层循环进行插入。原创 2020-10-26 08:31:00 · 360 阅读 · 0 评论 -
算法基础:排序算法:选择排序
选择排序是除冒泡排序之外特别容易被理解的排序算法了,这篇文章介绍一下选择排序的主要要点和实现。原创 2020-10-26 07:18:17 · 480 阅读 · 0 评论 -
算法基础:排序算法:冒泡排序
冒泡排序是所有排序中最为人所知的排序大概毫不为过,因为其名称中就包含了算法的主要思路,这篇文章介绍一下冒泡排序的主要要点和实现以及简单的优化思路。原创 2020-10-26 06:47:58 · 430 阅读 · 0 评论 -
算法基础:排序算法:7个常用的衡量指标
时间复杂度和空间复杂度是衡量算法的重要指标,对于排序算法这一特定算法,这篇文章整理了一些常见的基础性的指标,后续将以此为基础进行进一步的解释。原创 2020-10-25 20:53:18 · 2696 阅读 · 0 评论 -
算法基础:使用STL实现全排列
STL是标准模版库的缩写,是泛化编程的实现,基本观念是将数据和操作进行分离,数据使用容器进行管理,操作由算法进行实现,迭代器在两者之间进行沟通,使得任何算法和任何容器都有可能进行交互运作。这篇文章以一个简单的例子进行介绍STL使用上的便利之处。原创 2020-10-25 05:36:46 · 741 阅读 · 0 评论 -
算法基础:全排列问题
全排列是常见的一种场景,对于缺乏更好技巧的时候,作为暴力破解的思路,结合深度遍历使用对初入门者非常有效,代价就是时间复杂度很高。这篇文章介绍一下使用临位对换法来解决全排列的思路和方法。原创 2020-10-22 21:17:32 · 870 阅读 · 0 评论 -
基础算法:两步理解基础背包问题
动态规划问题中最为典型的问题之一就是背包问题,而0-1背包是其中最为基础的,N个物品具有各自的重量和价值,根据背包可容纳的重量W的限制,求取在此限制之下能装入的物品的最大价值,一般情况下会转化为dp的一个N*W复杂度的问题求解,这篇文章通过简单的示例进行解释和说明。原创 2020-10-11 09:43:25 · 595 阅读 · 0 评论 -
基础算法:编辑距离
编辑距离又称莱文斯坦距离,是俄国数学家Vladimir Levenshtein在1965年所提出的概念,主要用来判断对于两个字符串的差异化的量化,确认需要多少次处理才能将一个字符串变为另外一个,处理一般分为添加、删除和替换三种。原创 2020-10-07 19:47:06 · 3765 阅读 · 3 评论 -
算法基础:基本数据结构的特点:队列 vs 栈
这篇文章介绍一下基本数据结构中队列和栈的特点和复杂度。原创 2020-08-19 07:46:53 · 801 阅读 · 0 评论 -
算法基础:基本数据结构的特点与复杂度:数组 vs 链表
这篇文章介绍一下基本数据结构中数组和链表的特点和复杂度。原创 2020-08-19 06:28:24 · 505 阅读 · 0 评论 -
算法基础:空间复杂度与时间复杂度
这篇文章介绍一下算法基础中关于时间复杂度和空间复杂度的基本内容。原创 2020-08-18 21:34:35 · 879 阅读 · 0 评论