算法
i胡说
这个作者很懒,什么都没留下…
展开
-
寻找给定字符串的最大回文子串
对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度原创 2023-02-09 17:06:43 · 173 阅读 · 0 评论 -
C++实现字符串匹配KMP算法
KMP算法的做法:结合子串的特征,从开始位 + 4索引处重新又开始一轮的循环匹配。或者,KMP算法的做法也可以理解为:从父串的匹配失败位开始与子串的第三位(str[2])重新新一轮的匹配。原创 2019-08-30 10:58:58 · 985 阅读 · 0 评论 -
快速排序算法
快速排序是由托尼。霍尔(英文名C. A. R. Hoare,英国人,计算机领域爵士,同时是文科生获图灵奖者之一)于1962年提出的一种划分交换排序。快速排序采用的是一种分治策略。快速排序经典之处在于它的排序思想。所谓分治就是分而治之,从字面意思即可理解为:复杂问题简单化,简单问题重复化,重复问题高效化。所以,相比其它排序算法更快速。而书面解释为:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地处理这些子问题,然后将这些子问题的解组合为原问题的解。快速排序是一种不稳定的排序原创 2019-08-30 23:26:04 · 194 阅读 · 0 评论 -
二分查找算法
二分查找法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,但它有一个前提,就是必须在有序数据中进行查找。转载 2019-08-31 15:26:47 · 153 阅读 · 0 评论 -
拓扑排序算法
在一个表示工程的有向图中,有顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称为AOV网。AOV网中的弧表示活动之间存在的某种制约关系。所谓拓扑排序,其实就是对一个有向图构造拓扑序列的过程。原创 2019-09-03 09:09:34 · 282 阅读 · 0 评论 -
插值查找算法
关键公式:`mid = low + (high - low)*(key - a[low])/(a[high] - a[low]);`其时间复杂度仍为`O(logn)`,但对于表比较长且分布较均匀的查找表而言,插值查找算法的平均性能高于折半查找。原创 2019-09-03 11:17:03 · 333 阅读 · 0 评论 -
斐波那契算法
其思想与折半查找、插值查找没有多大区别,本质上只是分割点的选择不同。斐波那契查找需要构造斐波那契数列,该数列的作用就是提供分割点原创 2019-09-03 11:36:21 · 364 阅读 · 0 评论 -
C++实现反转字符串里的单词
问题描述:给定一个字符串,逐个翻转字符串中的每个单词。原创 2019-09-08 10:35:23 · 4299 阅读 · 0 评论 -
C++实现找出数组中任意重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输出长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3.转载 2019-10-09 11:27:29 · 2098 阅读 · 0 评论 -
C++实现图的广度优先BFS算法和深度优先DFS的(递归非递归)算法
图的遍历图和树的遍历类似,那就是从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这个过程就叫做图的遍历。对于图的遍历来说,如何避免因回路陷入死循环,就需要科学地设计遍历方案,通过有两种遍历次序方案:深度优先遍历和广度优先遍历。原创 2019-08-29 14:37:37 · 1961 阅读 · 0 评论 -
数据结构学习总结
网上关于数据结构的学习资料汗牛充栋,经过查找和比对,笔者对数据结构基础知识和经典算法做了简单整理,作为今后查阅的资料。原创 2019-08-27 10:13:41 · 154 阅读 · 0 评论 -
哈夫曼树及哈夫曼树编码
本文转自哈夫曼树及哈夫曼树编码在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN)树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点转载 2015-09-09 15:50:57 · 1759 阅读 · 0 评论 -
字符串匹配的KMP算法
本文转自字符串匹配的KMP算法字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。转载 2015-09-07 16:00:17 · 369 阅读 · 0 评论 -
KMP算法next数组计算
本文转自KMP算法next数组计算KMP算法是在最近这两年的软件设计师考试中才出现的。2次都是让求Next函数的序列(其实是)。先看看题吧。(2011年下半年上午题)(2012年上半年上午题)其实做这个题很简单,我先说说这个题里的各种概念。给定的字符串叫做模式串T。j表示next函数的参数,其值是从1到n。而k则表示一种情况下的next函数值。p表示转载 2015-09-07 17:20:16 · 674 阅读 · 0 评论 -
替换字符串中空格算法
案例:实现一个函数,把字符串中的每个空格替换成“%20”。#include "stdafx.h"#include using namespace std;void ReplaceBlank(char string[], int length){ if (string == NULL || length <= 0) { return; } //OriginalLength为原创 2015-09-16 19:51:21 · 1021 阅读 · 0 评论 -
C++实现快速排序算法
快速排序采用的是分治法,其平均时间复杂度为O(nlogn)一趟快速排序的算法是[1]: 1)设置两个变量I、J,排序开始的时候:I=0,J=N-1; 2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0]; 3)从J开始向前搜索,即由后开始向前搜索(J=J-1即J--),找到第一个小于key的值A[j],A[j]与A[i]交换;原创 2015-09-17 18:54:04 · 593 阅读 · 0 评论 -
二叉查找树及遍历算法
本文主要参考:http://kubicode.me/2015/08/04/Algorithm/IsBSTPostOrder/二叉查找树(Binary Search Tree),又称二叉搜索树、二叉排序树。它符合这样的特征:它是一颗二叉树(空树也可以)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值它的左、右子树原创 2015-09-18 12:28:03 · 451 阅读 · 0 评论 -
常用的排序算法的时间复杂度和空间复杂度
本文转自http://blog.csdn.net/wuxinyicomeon/article/details/5996675常用的排序算法的时间复杂度和空间复杂度排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)转载 2015-10-27 15:58:38 · 556 阅读 · 0 评论 -
腾讯研发类笔试面试试题(C++方向)
文章转自:https://blog.csdn.net/xiongchao99/article/details/73381280,如有侵权,请告知。1、C和C++的特点与区别?答:(1)C语言特点:1.作为一种面向过程的结构化语言,易于调试和维护;2.表现能力和处理能力极强,可以直接访问内存的物理地址;3.C语言实现了对硬件的编程操作,也适合于应用软件的开发;4.C语言还具有效率...转载 2019-07-12 18:43:51 · 360 阅读 · 0 评论 -
字符串匹配朴素算法
本文转自字符串匹配朴素算法这个朴素算法的英文命名为BruteForce,暴力的意思,所谓的朴素算法就是算法分析上常讲的暴力求解方法。这是一种方法,也是一种算法思想,就是不考虑空间时间复杂度,以最简单的看待问题的视角去思考,去解决。比如八皇后问题,使用8重循环来依依判断,比如全排列,使用多重循环枚举的方式等等。字符串匹配问题的朴素算法是字符串算法中最基本也可以算是最简单的算法了。转载 2015-09-07 17:11:16 · 835 阅读 · 0 评论