CSDN砖家
APP/网站/OA/CRM/ERP/小程序等定制开发
展开
-
CSDN-让你一看就懂的排序算法(就是这么简单)
算法概述算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。算法复杂度相关概念稳定:如果a原本在b前面,而a=b...原创 2019-01-30 10:37:16 · 28792 阅读 · 4 评论 -
CSDN---Mysql的B-Tree索引和Hash索引的区别。
hash索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不想B-Tree索引从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以hash索引的查询效率要远高于B-Tree索引。可能很多人会有疑问,既然hash索引的效率要高于B-Tree索引,为什么大家不用hash索引取代B-Tree索引呢?这是一个哲学命题,任何事物都有其两面性,hash索引也一样,虽然hash索引效率高...原创 2019-01-22 09:55:43 · 1877 阅读 · 0 评论 -
CSDN---B+树
B+树是对B树的一种变形树,它与B树的差异在于:有k个子结点的结点必然有k个关键码; 非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。 树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。如下图,是一个B+树:下图是B+树的插入动画:B和B+树的区别在于,B+树的非叶子结点只包含导航信息,不包含实际的值,所有的叶子结点和相连的节点使用链表相连...原创 2019-01-21 15:41:43 · 1181 阅读 · 2 评论 -
字符串匹配(java实现)
字符串操作通常称为模式匹配,是各种串处理系统中最重要的操作之一。本文主要介绍两种常用的实现算法:暴力匹配 KMP算法1.暴力匹配 时间复杂度为O(n*m):n为主串长度,m为模式串长度; 算法的基本思想:从主串的起始位置(或指定位置)开始与模式串的第一个字符比较,若相等,则继续逐个比较后续字符;否则从主串的下一个字符再重新和模式串的字符比较。以此类推,直...原创 2019-05-22 10:21:48 · 1237 阅读 · 0 评论 -
成为算法工程师需要必备的算法知识
一、 基础(Foundations)1、计算中算法的角色(The Role of Algorithms in Computing)2、 函数的增长率(Growth of Functions)3、 递归(Recurrences)4、 随机化算法( Randomized Algorithms)二、 排序与顺序统计(Sorting and Order Statistics)5、 ...原创 2019-03-15 09:59:41 · 3422 阅读 · 0 评论 -
递归
递归,就是在运行的过程中调用自己。构成递归需具备的条件:1. 子问题须与原始问题为同样的事,且更为简单;2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。在数学和计算机科学中,递归指由一种(或多种)简单的基本情况定义的一类对象或方法,并规定其他所有情况都能被还原为其基本情况。例如,下列为某人祖先的递归定义:某人的双亲是他的祖先(基本情况)。某人祖先的双亲同样...原创 2019-03-15 09:49:52 · 1212 阅读 · 0 评论 -
随机化算法
随机化算法(randomized algorithm),在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。就是将算法的某一步或者某几步至于运气的控制下,即该算法在运行中的某一步或者某几步涉及一个随机决策,或者说其中一个决策依赖于某种随机事件。一、随机化算法概述在我们的生活中,人们经常会去掷骰子来看结果,投硬币来决定行动,这就涉及到一个问...原创 2019-03-15 09:28:46 · 2271 阅读 · 0 评论 -
快速排序(Quick Sort)
快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。1.算法描述快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)。具体算法描述如下:从数列中挑出一个元素,称为 “基准”(pivot);重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基...原创 2019-03-15 10:13:25 · 1072 阅读 · 0 评论 -
中位数和数据统计
摘要: 本章所讨论的问题是在一个由n个不同数值构成的集合中选择第i个顺序统计量问题。主要讲的内容是如何在线性时间内O(n)时间内在集合S中选择第i小的元素,最基本的是选择集合的最大值和最小值。一般情况下选择的元素是随机的,最大值和最小值是特殊情况,书中重点介绍了如何采用分治算法来实现选择第i小的元素,并借助中位数进行优化处理,保证最坏保证运行时间是线性的O(n)。1、基本概念 顺序...原创 2019-03-18 09:11:34 · 1874 阅读 · 0 评论 -
四种基本数据结构
通常有下列四类基本的结构:集合结构:该结构的数据元素间的关系是“属于同一个集合”; 线性结构:该结构的数据元素之间存在一对一的关系; 树形结构:该结构的数据元素之间存在一对多的关系; 图形结构:该结构的数据元素之间存在多对多的关系,也称网状结构。1.结合结构所谓集合结构就是我们中学所学习的这个若x是集合A的元素,则记作x∈A。集合中的元素有三个特征:1).确定性(集合中...原创 2019-03-18 09:29:46 · 15708 阅读 · 0 评论 -
二叉树的原理及代码实现
概要 关于二叉树的学习,需要说明的是:它并不难,不仅不难,而且它非常简单。初次接触树的时候,我也觉得它似乎很难;而之所产生这种感觉主要是由于二叉树有一大堆陌生的概念、性质等内容。而当我真正的实现了二叉树再回过头来看它的相关概念和性质的时候,觉得原来它是如此的简单!因此,建议在学习二叉树的时候:先对二叉树基本的概念、性质有个基本了解,遇到难懂的知识点,可以画图来帮助理解;在有个基本的概念...原创 2019-03-18 11:22:47 · 3314 阅读 · 0 评论 -
扩充的数据结构
编程中常常会遇到已有的数据结构无法解决问题,这时不要急着创建新的数据结构,可以在已有数据结构的基础上添加新的字段。本节在红黑树这一基础数据结构上进行扩展,得出两个重要的应用—动态顺序统计和区间树。一、动态顺序统计 一种支持一般动态集合上顺序统计操作的数据结构。通过这种数据结构,可以快速找到一个集合中的第i小的数,(select)或给出一个指定元素在集合的全序中的位置。(rank...原创 2019-05-22 09:49:49 · 671 阅读 · 0 评论 -
CSDN---堆排序(Heap Sort)
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。1.算法描述将初始待排序关键字序列(R1,R2….Rn)构建成大顶堆,此堆为初始的无序区;将堆顶元素R[1]与最后一个元素R[n]交换,此时得到新的无序区(R1,R2,……Rn-1)和新的有序区(Rn),且满足R...原创 2019-03-15 10:10:33 · 1076 阅读 · 0 评论 -
CSDN-快速排序基本思想
快速排序基本思想输入代排数组——>选取基准元——>执行划分操作——>递归对两个数组进行快速排序1、比如这里输入序列{72,6,57,88,60,42,83,73,48}2、下面选取基准元,这里选取72选取基准元选取基准元后,会用另一个空间存放基准元的数据,用两个指针分别指向数组最前端与最后端,从最后端开始比较,如果比基准元72小,则放在基准元前面,...原创 2019-12-11 10:19:30 · 553 阅读 · 0 评论 -
一个有趣的数字变化算法
package com.bootdo.test.controller;public class SevenNumber { /* * 由7位数中的(单位数与尾数)(双位数与尾数)发生的变化 1. 尾数的变化特征: (1) : * 尾数上数字相加超过10时,去掉十位数上数字,只保留个位数上的数字! (2) : 尾数上数字相减低于 0 时,直接转变新一轮数字 ! * 2.单位数与尾...原创 2019-10-22 13:34:36 · 2627 阅读 · 0 评论 -
CSDN---冒泡排序(Bubble Sort)
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1.1 算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样...原创 2019-01-30 14:49:59 · 6148 阅读 · 0 评论 -
MySQL几种索引类型的区别和应用
Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。全文索引、hash索引、B-Tree索引、RTree(范围索引或空间索引)这几种索引功能和性能上的区别:FULLTEXT全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ...原创 2019-01-22 11:31:20 · 3695 阅读 · 0 评论 -
CSDN---R树
R树对于B/B+-Trees 由于它的线性特点,通常用来索引一维数据。(比它大的往一边走,比它小的往一边走,但只是在一个维度下进行比较)。B树是一棵平衡树,它是把一维直线分为若干段线段,当我们查找满足某个要求的点的时候,只要去查找它所属的线段即可。这种思想其实就是先找一个大的空间,再逐步缩小所要查找的空间,最终在一个自己设定的最小不可分空间内找出满足要求的解。一个典型的B树查找如下:...原创 2019-01-22 11:02:24 · 1499 阅读 · 0 评论 -
B树
B 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点。根节点至少有两个子节点 每个节点有M-1个key,并且以升序排列 位于M-1和M key的子节点的值位于M-1 和M key对应的Value之间 其它节点至少有M/2个子节点下图是一个M=4 阶的B树:可以看到B树是2-3树的一种扩展,他允许一个节点有多于2个的元素。B树的插入及平衡化操作和2-3树...原创 2019-01-21 15:28:28 · 11767 阅读 · 3 评论 -
HashMap、LinkedHashMap、TreeMap的区别
Map主要用于存储键值对,根据键得到值,因此不允许键重复,但允许值重复。一. HashMap HashMap比较常用,它根据键的值HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得的数据的顺序完全是随机的。 HashMap最多只允许一条记录的键为null;允许多条记录的值为null。 HashMap不支持...原创 2019-01-10 16:32:47 · 5692 阅读 · 0 评论 -
2-3树
2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3树不是二叉树,其节点可拥有3个孩子。不过,2-3树与满二叉树相似。高为h的2-3树包含的节点数大于等于高度为h的满二叉树的节点数,即至少有2^h-1个节点。2-3树是最简单的B-树(或-树)结构,其每个非叶节点都有两个或三个子女,而且所有叶都在统一层上。2-3树不是二叉树,其节点可拥有3个孩...原创 2019-01-21 15:24:45 · 853 阅读 · 0 评论