Java数据结构和算法的基础概念
来源:互联网 发布:噬菌体侵染细菌知乎 编辑:程序博客网 时间:2024/06/01 08:04
一、基本的概念
1.数据 是客观描述事物的符号,是计算机中操作的对象,是能被计算机识别.并输入给计算机处理的集合
2.数据元素 是组成数据的,有一定意义的基本单位.在计算机中通常作为整体处理.也被称为记录
3.数据项 一个数据元素可以由若干个项组成,是数据不可分割的最小单位
4.数据对象 是性质相同的数据元素的集合,是数据的子集
5.结构 各个组成部分相互搭配和排列的方式
6.数据结构 是相互之间存在一种或多种特定关系的数据元素的集合
1>.逻辑结构 是指数据对象中数据元素之间的相互关系
a.集合结构 集合结构中的元素同属于一个集合
b.线性结构 线性集合中的元素之间是一对一的关系
c.树形结构 树形结构中的元素之间存在一对多的层次关系
d.图形结构 图形结构中的元素之间存在多对多的关系
2>.物理结构 是指数据的逻辑结构在计算机中的存储形式。
a.线性存储 是把数据元素存放在地址连续的单元里,其数据见的物理关系和逻辑关系是一致的
b.链式存储 是把数据元素存放在任意的存储单元里,这些存储单元可以是连续的,也可以是不连续的
7.数据类型 是指一组性质相同的值的集合及定义在此集合上的一些操作的总称
8.算法 是解决特定问题求解步骤的描述,在计算机中表现为指令有限序列,并且每条指令表示一个或多个操作
1>.算法具有的五个特性
a.输入
b.输出
c.有穷性
d.确定性
e.可行性
2>.好的算法应该具有的特性
a.正确性 能正确反应问题的需求,你能得到问题的正确答案
b.可读性 便于理解和交流
c.健壮性
d.高效率
e.低存储
3>.算法的时间复杂度 公式:语句的总执行次数:T(n)=O(f(n)); f(n)为问题规模n的某个函数
大O记法的推导步骤
1.用常数1取代运行时间中的所有加法常数
2.在修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,咋去除与这个项相乘的常数
1.O(1) 常数阶
2.O(log2n)/O(lbn) 对数阶
3.O(n) 线性阶
4.O(n*log2n) 线性对数阶
5.O(n^2) 平方阶
6.O(n^3) 立方阶
7.O(n^k) k次方阶
8.O(2^n) 指数阶
4.算法的空间复杂度 公式: S(n)=O(f(n)); f(n)为语句关于n所占存储空间的函数
9.线性表(List) 零个或多个数据元素的有限序列.最前面的元素没有前驱.最后面的元素没有后继.其它元素有且只有一个前驱和后继
10.树 树(Tree)是n(n>=0)个节点的有限集合.n=0是称为空树
1>.树的定义
1.根节点是唯一的,不能存在多个根节点
2.子树的个数不限制,但是他们节点是互不相交的
2>.节点的定义
1.树的节点包含一个数据元素和若干指向子树的分支
2.节点拥有的子树的个数称为节点的度.度为0的节点称为叶子节点.度不为0的节点称为非终端节点或分支节点,树的度是树内各节点度的最大值
3.树中节点的最大层次称为树的深度或高度
3>.树结构和线性结构的区别
1.线性结构的第一个数据元素没有前驱.树结构的根节点:无双亲,唯一
2.线性表中间元素只有也仅有一个前驱和一个后继.中间节点...有一个双亲或着多个孩子
3.线性表的最后一个数据元素.没有后继 ,叶节点.无孩子
11.二叉树的特点
1.每个节点最多有两棵子树
2.左子树和右子树是有顺序的
3.即使节点只有一棵子树,也要区分他为左子树还是右子树
1>.斜树
1.所有节点都只有左子树的二叉树叫做左斜树
2.所有节点都只有右子树的二叉树叫做右斜树
2>.满二叉树 在一棵二叉树中,如果所有分支节点都存在左子树和右子树.并且所有叶子都在同一个层上.这样的二叉树称为满二叉树
特点:1.叶子只能出现在最下一层
2.非叶子节点的度一定是2
3.在同样深度的二叉树中.满二叉树的节点和叶子是最多的
3>.完全二叉树 对一棵具有N个节点的二叉树按层次编号,如果编号为i(1<=i<=N)的节点与同样深度的的满二叉树中编号为i的节点的位置完全相 同.即为完全二叉树
特点1.叶子节点只能出现在最下面的两层
2.最下层的叶子一定集中在左部的连续部位
3.倒数第二层若为叶子节点.一定在右连续位置
4.如果节点度为1.那么该节点只有左子树,不可能有右子树
5.同样节点树的二叉树,完全二叉树的深度是最小的
4>.二叉树的性质
1.在二叉树的第i层上最多2^i个节点
2.深度为i的二叉树,最多有2^(i+1)-1个节点
3.对任何一棵二叉树T,如果其叶子节点数为n0,度为2的节点数n2,则n0=n2+1;
4.具有n个节点的完全二叉树的深度为logn;
5>.二叉树的先,中,后序遍历
1.先序遍历 先访问根节点.在先序遍历左树.在先序遍历右树
2.中序遍历 中序遍历左子树,在访问根节点,在中序遍历右子树
3.后序遍历 后序遍历左子树,在后序遍历右子树,在访问根节点
1.数据 是客观描述事物的符号,是计算机中操作的对象,是能被计算机识别.并输入给计算机处理的集合
2.数据元素 是组成数据的,有一定意义的基本单位.在计算机中通常作为整体处理.也被称为记录
3.数据项 一个数据元素可以由若干个项组成,是数据不可分割的最小单位
4.数据对象 是性质相同的数据元素的集合,是数据的子集
5.结构 各个组成部分相互搭配和排列的方式
6.数据结构 是相互之间存在一种或多种特定关系的数据元素的集合
1>.逻辑结构 是指数据对象中数据元素之间的相互关系
a.集合结构 集合结构中的元素同属于一个集合
b.线性结构 线性集合中的元素之间是一对一的关系
c.树形结构 树形结构中的元素之间存在一对多的层次关系
d.图形结构 图形结构中的元素之间存在多对多的关系
2>.物理结构 是指数据的逻辑结构在计算机中的存储形式。
a.线性存储 是把数据元素存放在地址连续的单元里,其数据见的物理关系和逻辑关系是一致的
b.链式存储 是把数据元素存放在任意的存储单元里,这些存储单元可以是连续的,也可以是不连续的
7.数据类型 是指一组性质相同的值的集合及定义在此集合上的一些操作的总称
8.算法 是解决特定问题求解步骤的描述,在计算机中表现为指令有限序列,并且每条指令表示一个或多个操作
1>.算法具有的五个特性
a.输入
b.输出
c.有穷性
d.确定性
e.可行性
2>.好的算法应该具有的特性
a.正确性 能正确反应问题的需求,你能得到问题的正确答案
b.可读性 便于理解和交流
c.健壮性
d.高效率
e.低存储
3>.算法的时间复杂度 公式:语句的总执行次数:T(n)=O(f(n)); f(n)为问题规模n的某个函数
大O记法的推导步骤
1.用常数1取代运行时间中的所有加法常数
2.在修改后的运行次数函数中,只保留最高阶项
3.如果最高阶项存在且不是1,咋去除与这个项相乘的常数
1.O(1) 常数阶
2.O(log2n)/O(lbn) 对数阶
3.O(n) 线性阶
4.O(n*log2n) 线性对数阶
5.O(n^2) 平方阶
6.O(n^3) 立方阶
7.O(n^k) k次方阶
8.O(2^n) 指数阶
4.算法的空间复杂度 公式: S(n)=O(f(n)); f(n)为语句关于n所占存储空间的函数
9.线性表(List) 零个或多个数据元素的有限序列.最前面的元素没有前驱.最后面的元素没有后继.其它元素有且只有一个前驱和后继
10.树 树(Tree)是n(n>=0)个节点的有限集合.n=0是称为空树
1>.树的定义
1.根节点是唯一的,不能存在多个根节点
2.子树的个数不限制,但是他们节点是互不相交的
2>.节点的定义
1.树的节点包含一个数据元素和若干指向子树的分支
2.节点拥有的子树的个数称为节点的度.度为0的节点称为叶子节点.度不为0的节点称为非终端节点或分支节点,树的度是树内各节点度的最大值
3.树中节点的最大层次称为树的深度或高度
3>.树结构和线性结构的区别
1.线性结构的第一个数据元素没有前驱.树结构的根节点:无双亲,唯一
2.线性表中间元素只有也仅有一个前驱和一个后继.中间节点...有一个双亲或着多个孩子
3.线性表的最后一个数据元素.没有后继 ,叶节点.无孩子
11.二叉树的特点
1.每个节点最多有两棵子树
2.左子树和右子树是有顺序的
3.即使节点只有一棵子树,也要区分他为左子树还是右子树
1>.斜树
1.所有节点都只有左子树的二叉树叫做左斜树
2.所有节点都只有右子树的二叉树叫做右斜树
2>.满二叉树 在一棵二叉树中,如果所有分支节点都存在左子树和右子树.并且所有叶子都在同一个层上.这样的二叉树称为满二叉树
特点:1.叶子只能出现在最下一层
2.非叶子节点的度一定是2
3.在同样深度的二叉树中.满二叉树的节点和叶子是最多的
3>.完全二叉树 对一棵具有N个节点的二叉树按层次编号,如果编号为i(1<=i<=N)的节点与同样深度的的满二叉树中编号为i的节点的位置完全相 同.即为完全二叉树
特点1.叶子节点只能出现在最下面的两层
2.最下层的叶子一定集中在左部的连续部位
3.倒数第二层若为叶子节点.一定在右连续位置
4.如果节点度为1.那么该节点只有左子树,不可能有右子树
5.同样节点树的二叉树,完全二叉树的深度是最小的
4>.二叉树的性质
1.在二叉树的第i层上最多2^i个节点
2.深度为i的二叉树,最多有2^(i+1)-1个节点
3.对任何一棵二叉树T,如果其叶子节点数为n0,度为2的节点数n2,则n0=n2+1;
4.具有n个节点的完全二叉树的深度为logn;
5>.二叉树的先,中,后序遍历
1.先序遍历 先访问根节点.在先序遍历左树.在先序遍历右树
2.中序遍历 中序遍历左子树,在访问根节点,在中序遍历右子树
3.后序遍历 后序遍历左子树,在后序遍历右子树,在访问根节点
阅读全文
0 0
- Java数据结构和算法的基础概念
- java数据结构和算法(基础概念)
- 基础数据结构和算法概念
- 数据结构 和 算法 的概念
- 数据结构与算法的基础概念
- 数据结构与算法的基础概念
- Java基础数据结构和算法
- 数据结构(Java)--基础概念
- JAVA数据结构和算法(一)—概念问题
- java的数据结构和算法
- java的数据结构和算法
- java的数据结构和算法
- 数据结构复习之【数据结构和算法概念】
- 数据结构之【数据结构和算法概念】--复习
- C语言递归的基础和数据结构的初步概念
- 数据结构和算法基础
- 01.数据结构概念与算法基础
- 数据结构与算法_基础概念
- Java 并发工具包 java.util.concurrent 用户指南
- MySQL 事务(整理)
- 卡方分布
- Using template in practice(实际运用)
- kinetic安装arbotix模拟器
- Java数据结构和算法的基础概念
- 浅谈autoexp.dat文件的配置
- PHP-Socket-阻塞与非阻塞,同步与异步概念的理解
- JDBC 与C3p0连接数据库回顾
- linux 替换
- 为什么NSMutableArray必须用strong,而NSArray必须用copy?
- AJAX 跨域请求
- 【面向JS--字符串】
- centos7网卡不能重启