数据结构是存储的基石

355 阅读2分钟

这是我参与8月更文挑战的第28天,活动详情查看:8月更文挑战

算法是一切高性能程序的灵魂,而数据结构就是这个数据的装载容器

但是数据格式不一,容器也不一样

一、数据结构初识

1.数据结构:

 Date  Structure---->数据的结构

   就是存储数据的不同方式:

简单来说,卖鸡蛋,用袋子不规则的装起来,或者用专门的蛋板子去装;

2.数据结构的分类:   

     一般的就是数据结构:

数组

链表:

算法: Algorithm

解决同一问题的不同解决方法--->对于特定的数据结构;

算法的优劣:

 时间维度:

时间差,幅度不够,循环来凑;

空间维度:

Big  o:

时间-问题(数据)规模:

  时间复杂度:随着数据规模的变化,这个时间所呈现的规律;

  空间复杂度:随着数据规模的变化,这个空间所呈现的规律;

场景一:

 访问数组中的特定位置的数据

   解析:  比如数组的长度为10 ,只需要算偏移量,跳转就可以

  随着数据的规模扩大,变成10000, 也是计算偏移量,跳转

一般在算法中表示复杂度: 大写的O来判定:

  O(1)------>作为本场景数据获取特定位置的数据;

但是场景转换成链表之后呢,我们可以成为一个简单的数据;

   数据规模为n,找出特定位置(特定位置相对于时间复杂度来说,比较差的情况),那我们就规定为是,找出最后一个数据的时间;

这里的时间复杂度 为  O(5)

  经过数据规模扩大到N

 O(n)作为访问随机数据的时间复杂度;

场景二:求数组的平均数

  经过数据规模的扩大,数组增加然后平均的步骤也增加

  因为时间复杂度是O(n)

场景三: 找出数组最大值得时间复杂度:

 数组的最大值,

解析

三个数据的话,需要对比两次,
四个数据的话,需要对比三次

时间复杂度为:O(n-1)

2.1线性数据结构  :

   分为链式数据结构(链表)和顺序数据结构(数组)

   队列,数组、链表、栈

    非线性的数据结构:

对于多种排序的复杂度,是个图标:

image.png