C/C++ 数据结构与算法
路痴的旅行
一生有你
展开
-
冒泡排序
冒泡排序介绍冒泡排序一种简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止! 冒泡排序图解下面以数列{20,40,30,10,60,50}为例,...转载 2018-01-21 19:24:46 · 228 阅读 · 0 评论 -
从头到尾彻底理解KMP (极力推荐)
作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。后收录于新书《编程之法:面试和算法心得》第4.4节中。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟转载 2018-01-25 22:40:10 · 374 阅读 · 0 评论 -
字符串匹配的KMP算法
字符匹配场景字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。转载 2018-01-15 19:05:12 · 162 阅读 · 0 评论 -
KMP字符串模式匹配详解
KMP字符串模式匹配详解KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一.简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], char T [ ], int pos ){/* 若串 S转载 2018-01-15 19:00:42 · 441 阅读 · 0 评论 -
快速排序
在企业的面试或是考研的面试中,快速排序可以说是出现频率最高的一个问题,本文就快排做一个总结以帮助大家理解。快速排序介绍快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归转载 2018-01-21 23:17:30 · 223 阅读 · 0 评论 -
直接插入排序
直接插入排序介绍直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。插入排序图文说明下面选取直接插入排序的一个中间过程对转载 2018-01-21 21:14:11 · 186 阅读 · 0 评论 -
选择排序
选择排序介绍选择排序(Selection sort)是一种简单直观的排序算法。其基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。上面的说法可能还有点抽象,没关系,下面让我们用图来说明一切,相信大家肯定能看懂和理解的。...转载 2018-01-21 20:17:08 · 213 阅读 · 0 评论 -
冒泡排序法和选择排序法
语言中,常用的算法有:冒泡排序、快速排序、插入排序、选择排序、希尔排序、堆排序以及归并排序等等。那么从这篇开始,我将分别总结下这几种排序法。先交代一下,我们将要排序的数组定义为arr[N],即数组arr[]包含N个元素。## 冒泡排序法(Bubblesort) ##所谓排序法,就是对一组无序的序列进行有序的排序(从大到小或者从小到大),那么什么叫冒泡排序法,冒泡排序法又是怎么实现...转载 2018-01-21 20:18:49 · 293 阅读 · 0 评论 -
Manacher 算法
0. 问题定义最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例:12321 a aba abba aaaa tattarrattat(牛津英语词典中最长的回文单词)1. Brute-force 解法对于最长回文子串问题,最简单粗暴的办法是:找到字符串的所有子串,遍历每一个子串以转载 2018-01-18 19:27:08 · 178 阅读 · 0 评论