数据结构笔记-持续更新ing....

> 最近参加华为软件精英挑战赛,感觉编程、算法在目前做项目中非常重要,所以开始学习。我看的是《大话数据结构》和王卓老师的课,陈越老师的课程也很多人推荐,小破站都能搜到,欢迎大家一起学习交流,写的不对的地方烦请多多指正。

在这里插入图片描述

1. 绪论

1. 用计算机解决一个问题的步骤

在这里插入图片描述

2.基本概念

程序 = 数据结构 + 算法

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

意义:为编写一个“好”的程序,必须分析处理对象的特性及各处理对象之间的关系。
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

3. 抽象数据类型ADT

形式定义可以用D S P三元组表示,D:数据对象, S:D上的关系, P:对D的基本操作集

返回的数据前需要+ &,例如下图 Circle(&C, r,x,y)中&C:返回圆。
在这里插入图片描述

4.总结

在这里插入图片描述

2. 算法

1. 算法的描述

在这里插入图片描述

2. 基本概念
  • 程序 = 数据结构 + 算法

    • 数据结构通过算法操作

    • 算法根据数据结构设计程序

  • 算法

    • 是解决问题的一种方法or 一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法
    • 程序是某种设计语言对算法的具体实现
  • 算法估算:一个用高级程序语言编写的程序在计算机上运行时所消耗的时间取决于:

    • 算法采用的策略、方法
    • 编译产生的代码质量
    • 问题的输入规模
    • 机器执行指令的速度
  • 算法运行时间 = 语句执行次数(语句频度) * 语句执行一次所需时间

    • 每条语句执行一次所需时间,取决于机器的指令性能,速度及编译的代码质量,由机器本身软硬件环境决定,与算法无关
  • 函数的渐近增长

    • 给定两个函数f 和g ,如果存在一个整数N,使得对于所有的n>N,f 总比 g 大, 说f 的增长渐近快于g
    • 判断一个算法效率时,只关注最高阶项的阶数
  • 平均运行时间是所有情况种最有意义的,因为它是期望的运行时间

  • 一般在没有特殊说明的而情况下,都是指最坏时间复杂度

3. 知识点逻辑图

在这里插入图片描述

4. 时间复杂度补充
  • 常见时间复杂度

时间复杂度所耗费的时间越小,算法越优。
在这里插入图片描述

  • 语句频度
  • 主要看最深层的语句的频度

在这里插入图片描述

for(i = 1; i<=n; i++)
    for(j=1; j<=i; j++)
        for(k=1; k<=j; k++)
            x = x+1;

在这里插入图片描述

  • 对数阶时间复杂度计算
    在这里插入图片描述
5. 空间复杂度补充

在这里插入图片描述

6. 总结

在这里插入图片描述

线性表

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

鬼才的凝视

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

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

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

打赏作者

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

抵扣说明:

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

余额充值