数据结构(C语言)

第一章 绪论

1.1 数据结构的基本概念

1.数据:计算机化的信息(all things)

2.数据>数据元素(记录)>数据项

   数据元素是数据集合的个体。

3.数据对象:性质相同的数据元素的集合。

   数据对象是数据的一个子集。

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

   eg:像学校还分为系、处、研究机构。

5.数据类型:是高级语言的变量种类。

   可分为:

          原子类型(不可以再分):整型、实型、字符型、指针

          结构类型(可以分解的):数组

6.抽象数据类型:最重要的特点是数据抽象与信息隐蔽。

    抽象数据类型包括数据对象、数据元素间的结构关系、操作。

1.2 数据结构的内容

数据元素之间的关系具体应包括三个方面:数据的逻辑结构、数据的存储结构、数据的运算集合。

1.数据的逻辑结构

   形式定义:是一个二元组   Date_Structure = (D,R)

   基本结构:集合结构、线性结构、树形结构、图结构或网状图

2.数据的存储结构

   顺序结构:空间和位置都是按顺序

   链式结构:用指针来处理顺序问题(就像医院挂号,大家拿完号,随便站,影响顺序的是票)

3.数据的运算集合

1.3 算法

1.定义:是规则的有限集合,是解决特定问题规定的操作(具体问题具体分析,江湖人称“身法”)

2.特性:有限性、确定性、可行性、输入(可以为0)、输出(至少有1)

3.设计要求

   设计上一般应具有4个基本特性:

          (1)正确性

          (2)可读性

          (3)健状性(鲁棒性)

          (4)高效率和低存储量

1.4 算法描述

     (这里就浅浅长话短短说)      

      算法、语言、程序的关系

     算法用来描述数据对象之间的关系

     语言是描述算法的工具

     程序时候算法在计算机中的实现

1.5 算法性能评价

1.耗费的时间:该语句的执行次数 × 执行一次需要的时间

2.语句频度:该语句在一算法中重复执行的次数

   Eg:

for(i=0;i<n:i++)                           \\n+1
  for(j=0;j<n;j++)                         \\n(n+1)这边的加一是j++的那一次 不满足j<n就跳出
   {
      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³

   }

   算法的时间耗费 = 语句的频度之和f(n)

3.时间复杂度:随着问题规模n的增大,算法的时间增长率和f(n)的增长率相同。全名为算法渐进时间复杂度

T(n) = O(f(n))

                 n:问题规模 (可以稍稍自己查资料理解一下)    O:数量级      T(n):算法的时间度量   

     分析算法的时间复杂度推导大O阶:

    ---用常数1取代运行时间中的所有加法常数

    ---在修改后的运行次数函数中,只保留最高项(主项、次项 联系主次要矛盾思想不要太四磕

    ---如果最高项存在且不是1,则去除与这个项相乘的常数

    ---最后的结果就是大O阶

4.渐进时间复杂度

  一般和时间复杂度看成一样的,不做区分。

  当若干个循环语句嵌套时,算法的时间复杂度是和嵌套层数最多的循环语句中最内层的f(n)决定。

5.常用时间复杂度(七种)

   常数型O(1)      对数型O(log2^n)        线性型O(n)       二维型O(nlog2^n)     

   平方型O(n²)        立方型O(n³)        指数型O(2^n)   (时间复杂度从小到大排)

    当说求“复杂度”的时候一般都是说求时间复杂度。

6.耗费的空间:实际占用的辅助空间总和。

7.空间复杂度:算法耗费的存储空间的数量级S(n)。()

S(n) = O(f(n))    

1.6 数据结构和C语言

程序结构 = 数据结构 + 控制结构

程序 = 算法 + 数据结构

面向对象 = 对象 + 类 + 继承 + 通信

面向对象程序设计的特点:封装性、继承性、多态性

(这里我觉得没那么重要可以自己看看就好啦,下一章的线性表更加需要注意!)

加油喔!!!(●'◡'●)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值