sleepingspring

引用:https://blog.csdn.net/u012540337/article/details/80499226

引用:https://www.cnblogs.com/sanyezi/p/9052012.html

 

为什么要引入数据结构和数据类型的概念?

计算机只识别0和1。

现在人给计算机发送图片,语音,视频,二级制文件。

该怎么办呢?

其实简单一点的就是图片(0101010101)、语音(01010101010101010101010),视频(010101010101010110101001.......)二级制文件(010101010101...........)。

取中间值假设定义一种简单的数据(初始大小100000k),那发送1k的图片需要初始化100000k,是不太浪费内存空间了。

所以需要定义不同的数据,也就是不同的数据类型

现在需要统计班级的成绩,比如小红-第一名,小明-第二名,小周-第三名...大家一下子想到了使用key-value这样的集合去存储这样的数据。

怎么保证小红,就能拿到第一名呢?怎么保证数据过多,快速查找数据呢?删除、增加数据,集合怎么变动呢?

这就需要数据结构去解决这些问题了。

 

一、概念

数据结构:计算机存储、组织数据的方式。

     数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。

     通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。

        数据结构往往同高效的检索算法和索引技术有关。

数据类型:在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。

 

二、分类

数据结构:数组、栈、队列、链表、树、图、堆、散列表等。

数据类型:基本数据类型(byte、short、int、long、double、float、boolean、char),引用数据类型,(以JAVA举例)

 

三、浅谈不同

(1)数据类型定义了数据在计算机存储的大小及数据的操作。

    比如int类型的数据,在计算机存储是两个字节的长度。

    int类型有一些加、减、乘、除的操作。

  数据结构定义了数据存储及组织数据的方式。比如mysql数据库索引,使用的是B+树结构,提高了数据的检索效率,减少了io的操作。

(2)数据类型是一类事物的集合,

  数据结构是一种解决问题的思想。

(3)数据类型中也会用到数据结构,如HashMap的低层结构是数组+链表+红黑树

 

  • 数据结构:数组、栈、队列、链表、树、图、堆、散列表等。

    数据类型:基本数据类型(byte、short、int、long、double、float、boolean、char),引用数据类型,(以JAVA为例)

  • 数据类型:是一种值的集合和定义在这个值集上的一组操作的总称。

      数据类型的分类为:原子类型和结构类型;

      原子类型 = 一种值的集合 + 定义在值集合上的一组操作。(比如:java中的int,float,字符串)

      结构类型 = 一种数据结构 + 定义在这种数据结构上的一组操作。(比如:java中的列表,集合,Map)

    数据结构:是相互之间存在一种或多种特定关系的数据元素的集合,包括逻辑结构和物理结构。(数据元素是最基本的数据单位,最基本的数据元素是一个二进制位。)

  • 总结:数据结构是一种值的集合,这种值集+定义在值集上的一组操作就是结构类型,而结构类型是数据类型的一种,所以数据结构是一种数据类型(广义说法)

    数据结构可以看成是数据类型的一个子集(如下图):

  • 那B+树数据结构如何解释为是一个数据类型?

    可以说成这样,我们可以定义一个实现了B+树结构的类型的变量,但实现B+树结构的类型一般没去定义,这类型也没必要去定义,直接说某某实现了某某结构就可,mysql数据库索引,使用的是B+树结构。

    有些数据结构没必要包装成一种数据类型,如B+树

 

一般可以这样说,

某某类型实现了(用到)某某结构,如HashMap的低层结构是数组+链表+红黑树

某某功能实现了(用到)某某结构,如mysql数据库索引,使用的是B+树结构

 

有些结构可包装成类型,故广义可说,数据结构是一种数据类型。

 


————————————————
版权声明:本文为CSDN博主「WinterZhou」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012540337/article/details/80499226

分类:

技术点:

相关文章: