算法

排序算法简介

什么是排序?就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,

浅谈表达式求值

说到表达式求值问题,相信很多人都是迷茫或者不知道该如何下手去解决问题。首先要知道什么是表达式求值?可以解决什么问题?通过看了表达式求值的一系列题目得知,要解决的问题一般是输入一个字符串表示的表达式,要求输出它的值。当然也有变种比如表达式中是否包含括号,

C++字符串常用操作(一)

1.基本介绍在程序设计中,字符串操作是必不可缺的,无论是工程设计还是算法设计均离不开字符串,字符串是由一个个单独的字符构成的串,其数据结构是线性的,常以ASCII码表示,同时只要设定得当,其展示任何一种编码也都是可以的。字符串有很多的操作,也有非常多的扩展算法,

斯坦纳树Steiner Tree实例讲解

说到斯坦纳树问题,它是一种组合优化问题,与最小生成树相似,是最短网络的一种。最小生成树是在给定的点集和边中寻求最短网络使所有点连通。而最小斯坦纳树允许在给定点外增加额外的点,使生成的最短网络开销最小。一、斯坦纳树斯坦纳树问题是组合优化问题,与最小生成树相似,

DAG上的DP实例讲解

DAG是学习动态规划的基础,(DAG:有向无环图。)很多问题都可以直接转化为DAG上的最长路、最短路或路径计数问题。两个经典的DAG模型,嵌套矩形和硬币问题。一、嵌套矩形(1)第一个DAG模型:矩形嵌套问题描述:有n个矩形,每个矩形可以用a,b来描述,表示长和宽。

树的遍历之后序遍历二叉树

1.简介依旧是下面的这三句话:先序遍历:根左右中序遍历:左根右后序遍历:左右根后序遍历就是在访问二叉树的结点的时候采用,先左,再右,再根的方式,对于一个最简单的访问而言如图,先访问左节点B,之后访问右结点C,最后访问根节点A,后序遍历的访问顺序就是BCA然而实际上的遍历访问并没有那么简单,

倍增算法实例讲解

本篇将简要介绍倍增法。倍增法(英语:binarylifting),顾名思义就是翻倍。它能够使线性的处理转化为对数级的处理,大大地优化时间复杂度。这个方法在很多算法中均有应用,其中最常用的是RMQ问题和求LCA(最近公共祖先)。一、什么是倍增?倍增,字面意思就是“成倍增长”。

后缀平衡树简介

在我们学习认识后缀平衡树之前,一定要先了解什么是重量平衡树?所谓的重量平衡树是保证操作影响的最大子树大小是最坏的或均摊的或期望的O(logn)。那什么是后缀平衡树?后缀平衡树是一种动态维护后缀排序的数据结构。具体而言,它支持在串S的开头添加/删除一个字符。

简述随机增量法

随机增量算法是计算几何的一个重要算法,它对理论知识要求不高,算法时间复杂度低,应用范围广大。增量法(IncrementalAlgorithm)的思想与第一数学归纳法类似,它的本质是将一个问题化为规模刚好小一层的子问题。解决子问题后加入当前的对象。

什么是字节顺序?

一、什么是字节顺序?字节顺序,是指数据在内存中的存放顺序。举例说明什么是字节顺序使用16进制表示两个数:0x12345678和0x11223344。在内存中有两种方法存储这两个数字,分别为:从上图看,两种方案虽有不同,但也有共识,即依次存储每一个数字,