随笔分类 - 数据结构与算法
学习数据结构与算法
摘要:1.分治法是什么? 在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并
阅读全文
摘要:1.什么是递归 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是
阅读全文
摘要:什么是哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值
阅读全文
摘要:树是什么 线性结构中,一个节点至多只有一个头节点,至多只有一个尾节点,彼此连接起来是一条完整的线。 比如链表和数组; 而树,非线性结构的典型例子,不再是一对一,而变成了一对多(而图则可以是 多对多),树如下图所示: 基本概念 如下图: 根节点 :A 父节点 : A是B、C的父节点;B是D、E
阅读全文
摘要:字符串是什么 字符串(string): 是由 n 个字符组成的一个有序整体( n >= 0 )。例如,s = "BEIJING" ,s 代表这个串的串名,BEIJING 是串的值。这里的双引号不是串的值,作用只是为了将串和其他结构区分开。字符串的逻辑结构和线性表很相似,不同之处在于字符串针对的是字符
阅读全文
摘要:数组是什么 数组是数据结构中的最基本结构,几乎所有的程序设计语言都把数组类型设定为固定的基础变量类型。我们可以把数组理解为一种容器,它可以用来存放若干个相同类型的数据元素。 存放的数据是整数型的数组,称作整型数组 存放的数据是字符型的数组,则称作字符数组 另外还有一类数组比较特殊,它是数组的数组,也
阅读全文
摘要:队列是什么 与栈相似,队列也是一种特殊的线性表,与线性表的不同之处也是体现在对数据的增和删的操作上。 队列的特点是先进先出: 先进,表示队列的数据新增操作只能在末端进行,不允许在队列的中间某个结点后新增数据; 先出,队列的数据删除操作只能在始端进行,不允许在队列的中间某个结点后删除数据。也就是说队列
阅读全文
摘要:栈是什么 栈是一种特殊的线性表。栈与线性表的不同,体现在增和删的操作。具体而言,栈的数据结点必须后进先出。后进的意思是,栈的数据新增操作只能在末端进行,不允许在栈的中间某个结点后新增数据。先出的意思是,栈的数据删除操作也只能在末端进行,不允许在栈的中间某个结点后删除数据。 也就是说,栈的数据
阅读全文
摘要:什么是线性表 线性表是 n 个数据元素的有限序列,最常用的是链式表达,通常也叫作线性链表或者链表。在链表中存储的数据元素也叫作结点,一个结点存储的就是一条数据记录。每个结点的结构包括两个部分: 第一是具体的数据值 第二是指向下一个结点的指针 这是一个单项链表 如果最后一个指向第一个就会形成一个循
阅读全文
摘要:什么是数据结构 数据结构,从名字上来看是数据的结构,也就是数据的组织方式; 百度百科:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关 常
阅读全文
摘要:复杂度是什么 复杂度是衡量代码运行效率的重要度量因素。 时间复杂度与代码结构的关系 一个顺序结构的代码,时间复杂度是 O(1)。 二分查找,或者更通用地说是采用分而治之的二分策略,时间复杂度都是 O(logn)。 一个简单的 for 循环,时间复杂度是 O(n) 两个顺序执行的 for 循环,时间复
阅读全文

浙公网安备 33010602011771号