很大部分转载自 https://blog.csdn.net/singit/article/details/54898316

数据的逻辑结构:反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。

逻辑结构包括:

  集合:数据结构中的元素之间除了“同属一个集合”的相互关系外,别无其他关系。

  线性结构:数据结构中的元素存在一对一的相互关系

  树形结构:数据结构中的元素存在一对多的相互关系

  图形结构:数据结构中的元素存在多对多的相互关系

数据的物理结构是数据结构在计算机中的表示,它包括数据元素的机内表示和关系的机内表示,由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构

数据元素的机内表示:用二进制位的位串表示数据元素。通常称这种位串为节点。当数据元素有若干个数据项组成是,位串各数据项对应的子位串称为数据域,因此,节点是数据元素的机内表示。

关系的机内表示:数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像。

常用两种存储结构:顺序存储结构和链式存储结构

顺序映像借助于元素在存储器中的相对位置来表示数据元素之间的逻辑关系。

非顺序映像借助于元素存储位置的指针来表示数据元素之间的逻辑关系。

常用数据结构分类:

  数组:把具有相同类型的若干变量按有序的形式组织起来,这些按序排列的同类数据元素的集合称为数组。

  栈:是只能在某一端插入和删除的特殊线性表。按照先进后出的原则存储数据

  队列:   

数据结构 是对计算机内存中的数据的一种安排,它包括数组、链表、栈、二叉树、哈希表等等  

  可以解决的问题:

    现实世界数据存储

    程序员的工具

     建模

  数据结构的特性

数据结构 优点 缺点
数组 插入快,如果知道下表,可以快速的存取 查找慢,删除慢,大小固定
有序数组 比无序的数组查找快 删除和插入慢,大小固定
提供后进先出方式的存取 存取其他项很慢
队列 提供先进先出的凡是的存取 存取其他项很慢
链表 插入快,删除快 查找慢
二叉树 查找、插入、删除都快 删除算法复杂
红-黑树

查找、插入、删除都快,树总是平衡的

算法复杂
2-3-4树

查找、插入、删除都快,树总是平衡的,类似的树对磁盘存储有用

算法复杂
哈希表

如果关键字一致,则存取极快,插入快

删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分

插入、删除快,对最大数据项的存取很快

对其他数据项存取慢

对现实世界建模

有些算法慢且复杂

除了数组之外都可以被认为是抽象数据结构(ADT)

继承与多态

  继承是指由基类扩展或派生形成一个新类。 继承又称子类化。

  多态:指的是以相同的办法处理来自不同类的对象。

基本变量类型

boolean占 一位

    byte一个字节

     char、short二个字节

int、float 4个字节

long、dubbo8个字节

小结:

  数据结构是指数据在计算机内存空间中或磁盘中的组织形式。

  正确选择数据结构会使程序的效率大大提高

  数据结构的例子有数组、栈和链表

  算法是完成特定任务的过程

  在java中,算法经常通过类的方法实现

  本书中介绍的大部分数据结构和算法经常被用来建造数据库

  一些数据结构可以模拟现实世界的情况,例如城市之间的电话线网

  数据库是指由许多类似记录组成的数据存储的集合

  一条记录经常表示现实世界中的一个事物,例如一个雇员或一个汽车零件。

  一条记录被分成字段,每个字段都存储了由这个记录所描述事物的一条特性。

  一个关键字是一条记录中的一个字段,通过它可以对数据执行许多操作。

1对许多数据结构来说,可以(插入)一条记录,可以(查找)它,还可以(删除)它

2按照某种顺序对一个数据结构的内容进行重新排列被称为(排序)

3在数据库中一个字段是一条记录的一部分

4当查找一个特定记录时,所使用的那个字段被称为搜索关键字

5在面向对象程序设计中,一个对象可能包含有数据和方法

6一个类是许多对象的蓝图

8当一个对象想做一些事情时,它使用一个方法

9在java中,访问一个类的方法要用(点)操作符

10在java中,boolean和byte是数据类型

  

java版数据结构与算法 (1综述)的更多相关文章

  1. java版数据结构与算法第二章数组

    数组由一组具有相同类型的数据元素组成,并存储在一组连续存储单元中.一维数组是常量. 二维数组:若一维数组中的数据元素又是一堆数据结构,我们称之为二维数组.二维数组可以看成是n个列向量组成的线性表. 数 ...

  2. JavaScript 版数据结构与算法(二)队列

    今天,我们要讲的是数据结构与算法中的队列. 队列简介 队列是什么?队列是一种先进先出(FIFO)的数据结构.队列有什么用呢?队列通常用来描述算法或生活中的一些先进先出的场景,比如: 在图的广度优先遍历 ...

  3. Android版数据结构与算法(七):赫夫曼树

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 近期忙着新版本的开发,此外正在回顾C语言,大部分时间没放在数据结构与算法的整理上,所以更新有点慢了,不过既然写了就肯定尽力将这部分完全整理好分享出 ...

  4. java之数据结构与算法

    1.了解基本数据结构及特点 如,有哪些二叉树,各有什么特点 树二叉搜索树 每个节点都包含一个值,每个节点至多有两棵子树,左孩子小于自己,右孩子大于自己,时间复杂度是O(log(n)),随着不断插入节点 ...

  5. JavaScript 版数据结构与算法(一)栈

    今天,我们要讲的是数据结构与算法中的栈. 栈的简介 栈是什么?栈是一个后进先出(LIFO)的数据结构.栈有啥作用?栈可以模拟算法或生活中的一些后进先出的场景,比如: 十进制转二进制,你需要将余数倒序输 ...

  6. JavaScript 版数据结构与算法(三)链表

    今天,我们要讲的是数据结构与算法中的链表. 链表简介 链表是什么?链表是一种动态的数据结构,这意味着我们可以任意增删元素,它会按需扩容.为何要使用链表?下面列举一些链表的用途: 因为数组的存储有缺陷: ...

  7. JavaScript 版数据结构与算法(四)集合

    今天,我们要讲的是数据结构与算法中的集合. 集合简介 什么是集合?与栈.队列.链表这些顺序数据结构不同,集合是一种无序且唯一的数据结构.集合有什么用?在 Python 中,我经常使用集合来给数组去重: ...

  8. Android版数据结构与算法(一):基础简介

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 一.前言 项目进入收尾阶段,忙忙碌碌将近一个多月吧,还好,不算太难,就是麻烦点. 数据结构与算法这个系列早就想写了,一是梳理总结,顺便逼迫自己把一 ...

  9. 数据结构Java版之交换算法(一)

    交换的本质是拷贝,其中拷贝包括两种方式.值拷贝和指针拷贝,在java中没有指针,为此,我们可以理解为地址拷贝,在我看来,指针就是地址. 1.传值方式示例: 由上述示例可得,传值,不能起到交换的作用,原 ...

随机推荐

  1. git上传

    #1.Git 全局设置: git config --global user.name "skbarcode" git config --global user.email &quo ...

  2. LeetCode--030--串联所有单词的字串(java)

    给定一个字符串 s 和一些长度相同的单词 words.找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置. 注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要 ...

  3. vue文件上传控件

    下载地址:https://pan.baidu.com/s/1Z3pFh2J3xWa8YYnLoseasg 使用方式: <upload ref='upload' action-url='' :mu ...

  4. Confluence 6 针对 'unmigrated-wiki-markup' 宏重新尝试合并

    在签名的章节中,我们主要是针对没有完全合并完成余下的为合并内容的异常处理.最常见的情况是内容以及被合并了,但是页面使用 wiki 标记的内容没有被合并,通常这些 wiki 标记的内容使用了 'unmi ...

  5. .zip压缩版MySql的安装( )

    Mysql解压缩版下载安装过程 1.进入https://www.mysql.com/downloads/官网进行mysql的下载 找到downloads首页最下方MySQL Community Edi ...

  6. STSdb数据库的实现使用类

    STSdb 3.5是一个开源的key-value存储形式的数据库,它是用微软.net框架C#语言编写的.STSdb 3.5尤其使用于紧急任务或实时系统,如:股市交易,电子通信,实验室数据等,它的主要功 ...

  7. 非阻塞模式(ioctlsocket)

    //Server.cpp #include <stdio.h> #include <winsock2.h> //winsock.h (2种套接字版本) #pragma comm ...

  8. 从零开始搭建Webpack+react框架

    1.下载node.js Node.js官网下载 , 安装: 安装成功后在控制台输入node -v 可查看当前版本: $ node -v v10.15.0 输入npm -v查看npm版本: $ npm ...

  9. 在Ubuntu 18.04 安装 MySQL 8.0

    在Ubuntu 18.04 安装 MySQL 8.0 ① 登入 mysql 官网,在官网中下载 deb 包,点击该链接,即可下载. https://dev.mysql.com/downloads/re ...

  10. Android NDK pthreads详细使用

    这个pthread.h文件可以在NDK环境里创建子线程,并对线程能够做出互斥所.等待.销毁等控制. 写这个博客的原因是我要写如何使用FFmpeg播放视频,因为同时需要播放音频和视频所以需要开启线程,并 ...