一、基本的概念

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.后序遍历        后序遍历左子树,在后序遍历右子树,在访问根节点

java 中的数据元素的定义_Java数据结构和算法的基础概念相关推荐

  1. java数据接口之链表_Java数据结构和算法之链表

    三.链表 链结点 在链表中,每个数据项都被包含在'点"中,一个点是某个类的对象,这个类可认叫做LINK.因为一个链表中有许多类似的链结点,所以有必要用一个不同于链表的类来表达链结点.每个LI ...

  2. java语言中的数据是如何定义_java中的数据类型

    java中的数据类型 java语言的数据类型包括两种,基本数据类型和引用数据类型. 定义 基本数据类型:变量名指向具体的数值. 引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值. ...

  3. 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。例如,设 LA=(3,5,8,11) LB=(2,6,8,9,1

    已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列.例如,设 LA=(3,5,8,11) LB=(2,6,8,9,1 ...

  4. 设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。

    题目要求:设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性. 代码实现: void Insert(SqList *va,int x) {int i;if( ...

  5. (线性表)设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序。

    (线性表)设顺序表A中的数据元素递增有序,试写一程序,将x插入到顺序表的适当位置上,使该表仍然有序. [算法的基本思想] 建立顺序表,在表中从后往前查找要插入的元素的位置,直到找到第一个比X小的数,并 ...

  6. 设顺序表va中的数据元素递增有序。先实现将x插入到顺序表的适当位置上,保存该表的有序性。

    设顺序表va中的数据元素递增有序.先实现将x插入 到顺序表的适当位置上,保存该表的有序性. /* 设顺序表va中的数据元素递增有序.先实现将x插入 到顺序表的适当位置上,保存该表的有序性. */ #d ...

  7. java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较

    1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...

  8. 算法2.2 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列。

    数据结构(C语言版)严蔚敏 吴伟民 算法2.2 已知线性表LA和LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的数据元素仍按值非递减有序排列.例如,设 LA= ...

  9. Java中List 删除元素方法參考

    Java中List 删除元素 Java中List 删除元素会使集合大小减少,合理删除的一些方法. 1:删除后的元素i-1 删除一个元素后,后边的元素左移1位,此时i-1,保证了下次循环能访问到左移了1 ...

最新文章

  1. 专家揭示模块化数据中心的真谛
  2. Linux 终端下 dstat 监控工具
  3. 然而毕博淮安的毕博淮安
  4. 操作系统(李治军) L10用户级线程
  5. 一个小案例精通lamda表达式与函数式接口
  6. OSI七层协议模型和各自的功能
  7. MacOS如何设置不使用时退出登录用户账号
  8. 金庸15部小说精校版
  9. CREO:CREO软件的简介、安装(七大步骤)、学习路线大全(CREO软件各模块界面解释—菜单栏快速栏工作区、草绘/零件/工程图/装配设计讲解)、案例应用(几十个案例)之详细攻略
  10. 2018第九届蓝桥杯省赛真题JAVA语言 C组真题题解答案(全)
  11. 计算机无法连接声音怎么办,电脑耳机没声音怎么设置|耳机插电脑没有声音解决方法...
  12. Jetpack-Compose
  13. python网络编程内容_图解Python网络编程
  14. 猜数字游戏(小游戏编码)
  15. 安装黑群晖不求人,arpl在线编译安装群晖教程
  16. coreldraw 长方体_用coreldraw 11制作铅笔_coreldraw教程
  17. webpack 配置 alias
  18. 机器学习算法衡量指标——准确率、精确率(查准率)、召回率(查全率)
  19. "无招胜有招"nbsp;史上最全的互…
  20. 房屋租赁合同中押金的法律性质分析

热门文章

  1. 聊聊前端的Html布局
  2. java中 jacob作用_Jacob用法收集
  3. 2022全新Ripro日主题V9.0升级修正版源码+美化包和插件
  4. 【每天学习一点新知识】robots.txt详解
  5. MySQL中Left Join用法
  6. python文件如何打包生成.exe文件?(打包教程)
  7. 用html5,nodeJs开发桌面应用程序
  8. SSM+Vue+Element-UI实现员工工资管理系统
  9. 2022春 哈工大《近世代数》习题作业解答汇总
  10. java设计模式示例