数据结构和算法
文章平均质量分 80
墨_诚
这个作者很懒,什么都没留下…
展开
-
数据结构和算法-简介
一、数据结构 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 数据结构的基本功能:1、如何插入一条新的数据项2、如何寻找某一特定的数据项3、如何删除某一特定的数据项4、如何迭代的访问各个数据项,以便进行显示或其他操作 常用的数据结构:二、算法的五个特征1、有穷性:对于任意一组合法输入值,在执行有穷步骤之后一定能结束,即:算法中的每...转载 2018-06-13 21:52:51 · 292 阅读 · 0 评论 -
数据结构和算法-堆
1、堆的定义①、它是完全二叉树,除了树的最后一层节点不需要是满的,其它的每一层从左到右都是满的。注意下面两种情况,第二种最后一层从左到右中间有断隔,那么也是不完全二叉树。 ②、它通常用数组来实现。 这种用数组实现的二叉树,假设节点的索引值为index,那么: 节点的左子节点是 2*index+1, 节点的右子节点是 2*index+2, 节点的父节点是 (index-1)/2。 ...转载 2018-06-17 01:14:34 · 156 阅读 · 0 评论 -
数据结构和算法-哈希表
1、哈希表介绍 Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组、链表、树等数据结构不同,在这些数据结构中查找某个关键字,通常要遍历整个数据结构,也就是O(N)的时间级,但是对于哈希表来说,只是O(1)的时间级。 注意,这里有个重要的问题就是...转载 2018-06-17 00:58:49 · 181 阅读 · 0 评论 -
数据结构和算法-2-3-4树
1、2-3-4树介绍2-3-4树每个节点最多有四个字节点和三个数据项,名字中 2,3,4 的数字含义是指一个节点可能含有的子节点的个数。对于非叶节点有三种可能的情况: ①、有一个数据项的节点总是有两个子节点; ②、有二个数据项的节点总是有三个子节点; ③、有三个数据项的节点总是有四个子节点; 简而言之,非叶节点的子节点数总是比它含有的数据项多1。如果子节点个数为L,数据项个数为D,那么:L...转载 2018-06-16 23:46:47 · 5096 阅读 · 1 评论 -
数据结构和算法-二叉树
1.树树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。它是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。①、节点:上图的圆圈,比如A,B,C等都是表示节点。节点一般代表一些实体,在java面向对象编程中,节点一般代表对象。 ②、边:连接节点的线称为边,边表示节点...转载 2018-06-16 23:42:07 · 217 阅读 · 0 评论 -
数据结构和算法-高级排序
1、希尔排序 希尔排序是基于直接插入排序的,它在直接插入排序中增加了一个新特性,大大的提高了插入排序的执行效率。所以在讲解希尔排序之前,我们先回顾一下直接插入排序。 ①、直接插入排序 直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 实现代码为:+ View Code 我们可以分析一下这个直接插入排序,首先我们将需要插入的数放...转载 2018-06-15 23:29:57 · 190 阅读 · 0 评论 -
数据结构和算法-递归
1、递归的定义递归就是在运行的过程中调用自己。递归必须要有三个要素: ①、边界条件 ②、递归前进段 ③、递归返回段当边界条件不满足时,递归前进;当边界条件满足时,递归返回。2、求一个数的阶乘:n!n! = n*(n-1)*(n-2)*......1 规定: ①、0!=1 ②、1!=1 ③、负数没有阶乘上面的表达式我们先用for循环改写:/** * 0!=1 1!=1 * 负数没...转载 2018-06-15 23:18:07 · 249 阅读 · 0 评论 -
数据结构和算法-链表
1、链表(Linked List)链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,...转载 2018-06-15 23:00:13 · 190 阅读 · 0 评论 -
数据结构和算法-前缀、中缀、后缀表达式
举例:(3 + 4) × 5 - 6 就是中缀表达式- × + 3 4 5 6 前缀表达式3 4 + 5 × 6 - 后缀表达式中缀表达式(中缀记法)中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。虽然人的大脑很容易理解与分析中缀表达式,但对计算机来说中缀表达式却是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或...转载 2018-06-14 21:48:16 · 485 阅读 · 1 评论 -
数据结构和算法-队列
1、队列的基本概念 队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端...转载 2018-06-14 21:32:22 · 151 阅读 · 0 评论 -
数据结构和算法-栈
1、栈的基本概念栈(英语:stack)又称为堆栈或堆叠,栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一...转载 2018-06-14 20:48:14 · 208 阅读 · 0 评论 -
数据结构和算法-冒泡、选择、插入排序算法
一、冒泡排序 冒泡算法的运作规律如下:①、比较相邻的元素。如果第一个比第二个大,就交换他们两个。②、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数(也就是第一波冒泡完成)。③、针对所有的元素重复以上的步骤,除了最后一个。④、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 代码如下:public cla...转载 2018-06-13 22:47:18 · 183 阅读 · 0 评论 -
数据结构和算法-数组
一、Java数组介绍 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型。1、数组的声明 第一种方式:数据类型 [] 数组名称 = {数组元素1,数组元素2,......} [] 可以放在数组名称的前面,也可以放在数组名称的后面 第二种方式:数据类型 [] 数组名称 = {数组元素1,数组元素2,......} 这种方式声明数组的同时直接给定了...转载 2018-06-13 22:28:59 · 253 阅读 · 0 评论 -
数据结构和算法-无权无向图
1、图的定义我们知道,前面讨论的数据结构都有一个框架,而这个框架是由相应的算法实现的,比如二叉树搜索树,左子树上所有结点的值均小于它的根结点的值,右子树所有结点的值均大于它的根节点的值,类似这种形状使得它容易搜索数据和插入数据,树的边表示了从一个节点到另一个节点的快捷方式。 而图通常有个固定的形状,这是由物理或抽象的问题所决定的。比如图中节点表示城市,而边可能表示城市间的班机航线。如下图是美国加...转载 2018-06-17 15:05:03 · 2053 阅读 · 0 评论