数据结构入门基础(算法特性,复杂度)

前言

——数据结构,这门课程主要介绍如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价。不少同学即将接触这样门课程,跟着我们一起带你学好数据结构!

数据结构基础

数据结构是介于数学、计算机硬件和软件之间的一门核心课程,看看他们的联系
在这里插入图片描述

基本概念和术语

  • 数据(Data):是信息的载体,能够被计算机识别、存储和加工处理。
  • 数据元素(Data Element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
    一个数据元素可由若干个数据项(Data Item)组成。数据项是数据的不可分割的最小单位。
  • 数据对象(Data Object):是相同性质的数据元素的集合,是数据集合的一个子集。
  • 数据结构(Data Structure):是相互之间存在一种或多种特定关系的数据元素的集合。
  • 数据结构的形式定义为一个二元组: Data_Structure =(D,R)
    其中,D是数据元素的有限集,R是D上关系的有限集。
    数据结构包括数据的逻辑结构数据的存储结构数据运算3个方面。

逻辑结构

数据元素之间的相互关系称为逻辑结构,通常分为四类基本结构

  1. 集合 :结构中的数据元素除了同属于一种类型外,别无其它关系。
  2. 线性结构 :结构中的数据元素之间存在一对一的关系。
  3. 树型结构 :结构中的数据元素之间存在一对多的关系。
  4. 图状结构或网状结构 :结构中的数据元素之间存在多对多的关系。
    在这里插入图片描述

存储结构

数据元素及逻辑关系在计算机内的表示方法称为存储结构,有一下两种基本方式

  1. 顺序存储结构:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。顺序存储结构是一种最基本的存储表示方法。
  2. 链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。
    在这里插入图片描述

数据的运算

数据运算是定义在数据的逻辑结构之上的,每一种逻辑结构都有一个运算的集合。
数据的运算主要有修改插入删除查找排序

算法的五大特性

  1. 有穷性: 一个算法必须在执行有穷步之后结束,且每步都可在有限时间内完成。
  2. 确定性:算法中的每一步,必须有确切的含义,不能有二义性
  3. 可行性:算法中描述的每一步操作都可以通过已有的基本操作执行有限次实现
  4. 输入:一个算法应该有零个或多个输入
  5. 输出:一个算法应该有一个或多个输出

时间复杂度

  • 时间复杂度是指,算法运行从开始到结束所需要的时间,通常用时间复杂度与空间复杂度来评价算法的优劣。
  • 算法所需的时间 = 每条语句的执行时间之和。
    每条语句的执行时间 = 语句执行次数(也称为频度)*执行一次该语句所需时间

例:求两个N阶方阵的乘积C=A*B的算法

#define N 100
void  MatrixMultiply(int A[N][N],int B[N][N],int C[N][N])
{
   for(i=0;i<N; i++)                               //  n+1
     for(j=0;j<N;j++)                              //  n(n+1)
     {  C[i][j]=0;                                //    n²
         for(k=0;k<N;k++)                          //   n²(n+1)
           C[i][j]=C[i][j]+A[i][k]*B[k][j];        // n³
     }
}

上述算法的执行时间(即语句的频度之和)是 T(n)=2n³+3n²+2n+1;它是方阵阶数n立方的函数。
赋值语句

 {++x; s=0;}
  • 将x自增看成是基本操作,则语句频度为1,即时间复杂度为O(1)
  • 如果将s=0也看成是基本操作,则语句频度为2,其时间复杂度仍为O(1),即常量阶。

简单循环

for(i=1;i <=n;++i)
     {++x;s+=x;}
  • 基本运算频度为:n 其时间复杂度为:O(n)
  • 即时间复杂度为线性阶。

双重循环

for(i=1;i<=n;++i)
    for(j=1;j<=n;++j)
               {++x;s+=x;}

基本运算频度为:n²;其时间复杂度为:O(n²),即时间复杂度为平方阶

空间复杂度

算法所需存储空间的度量,记作: S(n)=O(f(n))
其中n为问题的规模(或大小)

小结

  1. 掌握数据结构的基本概念
    在这里插入图片描述
  2. 逻辑结构与存储结构的区别
  3. 抽象数据类型
  4. 算法和算法分析

本次数据结构课程的第一章 内容分享就到这里了,掌握好以上内容便能助你学好数据结构这一课程,后续我们还会给大家带来其他章节内容,如果在学习中遇到问题欢迎在官方qq群留言交流

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Beiyux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值