
C++数据结构与算法
Chen-Lee
这个作者很懒,什么都没留下…
展开
-
数据结构-队列
队列的C++语言头文件MyQueue.h程序如下:#ifndef MYQUEUE_H#define MYQUEUE_H/*********************************************************//* 环形队列 *//************************原创 2017-06-19 16:30:45 · 231 阅读 · 0 评论 -
贝叶斯估计分类
0、写在前面的话 我个人一直很喜欢算法一类的东西,在我看来算法是人类智慧的精华,其中蕴含着无与伦比的美感。而每次将学过的算法应用到实际中,并解决了实际问题后,那种快感更是我在其它地方体会不到的。 一直想写关于算法的博文,也曾写过零散的两篇,但也许是相比于工程性文章来说太小众,并没有引起大家的兴趣。最近面临毕业找工作,为了能给自己增加筹码,决定再次复习算法方面的知转载 2017-08-19 15:34:40 · 824 阅读 · 0 评论 -
【2017年】阿里巴巴算法笔试第二题
第二题:菜鸟仓库是一个很大很神奇的地方,各种琳琅满目的商品整整齐齐地摆放在一排排货架上,通常一种品类(sku)的商品会放置在货架的某一个格子中,格子设有统一的编号,方便工人们拣选。 有一天沐哲去菜鸟仓库参观,无意中发现第1个货架格子编码为1,第2-3个分别为1,2,第4-6个格子分别是1,2,3,第7-10个格子编号分别是1,2,3,4,每个格子编号都是0-9中的一个整数,且相邻格子的编号连在一起原创 2017-08-25 21:45:32 · 564 阅读 · 0 评论 -
通俗易懂的希尔排序
原文链接:http://blog.youkuaiyun.com/morewindows/article/details/6668714希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 该方法的基本思想是:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待整个序列中的元素基本有转载 2017-08-27 21:41:55 · 328 阅读 · 0 评论 -
排序算法代码总结
#include#include#includeusing namespace std;class sort{public: //交换两个变量的值 void swap(int &a,int &b) { int temp = a; a = b; b = temp; } //冒泡算法1:固定一个,让其替换为最小的值 时间复杂度O(n^2) //稳定性:稳原创 2017-09-01 15:05:39 · 218 阅读 · 0 评论 -
哈希表查找概述
参考:《大话数据结构》1.定义 散列技术是通过查找关键字而不需要比较就能获得需要的记录的存储位置,主要是面向查找的存储结构。 散列技术是在记录的存储位置和它的关键字之间建立的一个确定的对应关系f,使得对于每个关键字key对应一个存储位置f(key)。 对应关系f成为散列函数(或哈希(Hash)函数)。采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空转载 2017-10-01 18:58:37 · 288 阅读 · 0 评论 -
海量数据处理:分治-Hash映射+Bit-map+Bloome Filter
海量数据处理,就是基于海量数据的查找/统计/运算等操作。海量数据顾名思义,就是有大量的数据,不能一次性装入内存处理,导致传统的操作无法实现。对于海量数据的处理,这里将三个,分别是分治--Hash映射/Bit-map/Bloome Filter。 1. 分治-Hash映射 如果两个散列值不同,那么这两个散列值的原始输入也是不同的。 基本思想:对于大文件进行处理时,如转载 2017-10-02 15:47:17 · 526 阅读 · 0 评论 -
排列组合知识补充
感谢原文:http://blog.youkuaiyun.com/zxw0819/article/details/71706543?locationNum=2&fps=1先补充一个其它的东西—–二项式定理: 排列:定义:从n个不同元素中,任取m(m≤n,m与n均为自然数,下同)个元素按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个转载 2017-10-23 13:33:14 · 250 阅读 · 0 评论 -
Trie树详解及其应用
一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。 Trie 的强大之处就在于它的时间复杂度。它的插入和转载 2017-10-24 17:30:24 · 227 阅读 · 0 评论 -
Bloom Filter原理介绍
参考原文:http://www.cnblogs.com/heaad/archive/2011/01/02/1924195.htmlBloomFilter——大规模数据处理利器 Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。 一.转载 2017-11-05 17:03:04 · 282 阅读 · 0 评论 -
广义表
概念 广义表(Generalized Lists)是n(n≥0)个数据元素a1,a2,…,ai,…,an 的有序序列,一般记作: ls=(a1,a2,…,ai,…,an) 其中:ls 是广义表的名称,n 是它的长度每个ai(1≤i≤n)是ls 的成员:它转载 2017-08-18 19:04:26 · 548 阅读 · 0 评论 -
数据结构-线性表
编程实现要比队列和栈要重要。是学好其他知识的基础。什么是线性表线性表是n个数据元素的有限序列。线性表的分类 顺序表(数组)线性表 静态链表 链表 循环链表 单链表转载 2017-08-17 21:51:23 · 233 阅读 · 0 评论 -
数据结构-栈
堆栈是两种数据结构,堆也叫队列,先进先出(FIFO—first in first out) 。栈,先进后出(FILO—First-In/Last-Out)。用C++编写的栈的源文件,加入了模板,适用于各种数据类型,文件名为MyStack.h,需要都写入.h文件中:#ifndef MYSTACK_H#define MYSTACK_H/********************************原创 2017-06-23 20:05:51 · 213 阅读 · 0 评论 -
数据结构-树
树: 是 n(n≥0) 个结点的有限集合。如果该集合为空,称为空树。在任意一棵非空树中:1)有且仅有一个特定的称为根结点 ( root ) 的结点; 2) 其他结点可分为若干个互不相交的子集(递归定义),而且每一个子集本身又是一棵树,称为根的子树。 基本概念:结点:树的顶点; 结点的度:结点分支的个数,即子树的数目 如:A的度-3;B的度-2;K的度-0; 树的度:树中所有结点的度的最大值原创 2017-06-23 20:59:46 · 290 阅读 · 0 评论 -
算法--动态规划
来源《算法导论》 Serling公司购买长钢条,将其切割为短钢条出售。切割工序本身没有成本支出。公司管理层希望知道最佳的切割方案。假定我们知道Serling公司出售一段长为i英寸的钢条的价格为pi(i=1,2,…,单位为美元)。钢条的长度均为整英寸。图15-1给出了一个价格表的样例。 钢条切割问题是这样的:给定一段长度为n英寸的钢条和一个价格原创 2017-07-14 19:14:44 · 340 阅读 · 0 评论 -
动态规划:从新手到专家
原文地址:http://www.360doc.com/content/17/0715/21/45445720_671605194.shtml动态规划:从新手到专家March 26, 2013作者:Hawstein出处:http://hawstein.com/posts/dp-novice-to-advanced.html声明:本文采用以下协议进行授权: 自由转载-非转载 2017-07-15 21:47:58 · 220 阅读 · 0 评论 -
(算法)判断两个区间是否重叠
题目:判断两个区间是否重叠思路:假设区间表示为[start,end],先存在两个区间A,B.两个区间的关系有两种:重叠与不重叠重叠的情况有4种,两种相交,两种包含(很容易想到,此处不示意)不重叠有两种情况:A在B前面,A在B后面因此很容易得到判断区间重叠的方法:1、正向判断,列出四种重叠的情况,满足其一,则重叠;2、逆向判断,转载 2017-07-21 18:02:06 · 14753 阅读 · 3 评论 -
算法面试字符串-题目1
把一个0-1串(只包含0和1的串)进行排序,你可以交换任意两个位置,问最少交换的次数?(国内某公司最新在线笔试题)分析: 快排partition?最左边的那些0和最右边的那些1都可以不管程序如下:#include #include #include using namespace std;class Solution {public: int mi原创 2017-07-22 22:26:32 · 338 阅读 · 0 评论 -
算法面试字符串-题目2-删除和复制
删除一个字符串所有的a,并且复制所有的b。注:字符数组足够大程序如下:#include #include #include using namespace std;class Solution {public://删除一个字符串所有的a,并且复制所有的b。 string stringRepaceAndCopy(string &A) { int原创 2017-07-23 15:17:59 · 380 阅读 · 0 评论 -
算法面试字符串-题目3-交换*号
例3 一个字符串只包含*和数字,请把它的*号都放开头。方法1:快排partition——数字相对顺序会变化循环不变式:[0..i – 1]都是*,[i..j– 1]是数字,[j..n– 1]未探测程序如下:#include #include #include using namespace std;class Solution {publi原创 2017-07-23 17:26:26 · 286 阅读 · 0 评论 -
KMP算法介绍
参考:https://www.cnblogs.com/c-cloud/p/3224788.html前言 之前对kmp算法虽然了解它的原理,即求出P0···Pi的最大相同前后缀长度k;但是问题在于如何求出这个最大前后缀长度呢?我觉得网上很多帖子都说的不是很清楚,总感觉没有把那层纸戳破,后来翻看算法导论,32章 字符串匹配虽然讲到了对前后缀计算的正确性,但是大量的推理证明转载 2017-12-16 18:58:58 · 475 阅读 · 0 评论