![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 71
CaesarX
这个作者很懒,什么都没留下…
展开
-
字符串匹配之KMP算法
字符串匹配问题:假设文本是一个长度为n的字符串T,模板是一个长度为m 的字符串P,且m · n。一般说来,我们认为文本和模板的字母表相同。如果存在整数s 使得0 · s · n ¡ m且T[s+1..s + m]=P[1..m],我们说模板P在文本T的偏移(shift) s出现,也可以说在位置s+1出现(因为T[s+1]=P[1])。字符串问题就是要找出所有合法的偏移。下图是P在T的偏移3原创 2012-04-14 17:04:59 · 570 阅读 · 0 评论 -
排序算法总结(一)
排序是最基本的算法,曾经学过很多种排序算法,但从没有总结过,这次总结一下,排序算法有快速排序,桶排序,插入排序,基数排序,归并排序,冒泡排序,选择排序,希尔排序,堆排序,计数排序等,再次一一总结一下。快速排序:通过一趟扫描将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据原创 2012-04-14 22:06:26 · 905 阅读 · 0 评论 -
排序算法总结(三)
堆排序堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 (1)用大根堆排序的基本思想 ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 ② 再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n],且原创 2012-04-15 14:55:26 · 582 阅读 · 0 评论 -
排序算法总结(二)
归并排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。我们一般取中位数,将前后两部分排序在归并为一个序列,递归完成。#include using namespace std;void merge(int a[],int low,int mid, int high原创 2012-04-15 11:32:11 · 798 阅读 · 0 评论 -
寻找众数
众数:一般来说,一组数据中,出现次数最多的数就叫这组数据的众数。如何寻找众数?最一般直接的想法就是把数据排好序,在遍历统计每个元素出现的次数,出现次数最多的数据即为所找的众数。代码如下://寻找众数问题#include using namespace std;#define N 10void swap(int &p,int &q){ int t; t原创 2012-04-14 20:45:41 · 2243 阅读 · 0 评论