【408篇】C语言笔记-第九章(数据结构概述)

news/2024/7/3 16:28:05

文章目录

    • 第一节:逻辑结构与存储结构
      • 1. 逻辑结构
      • 2. 存储结构
        • 1. 顺序存储
        • 2. 链式存储
        • 3. 顺序存储与链式存储分析
    • 第二节:算法的评价(时间复杂度与空间复杂度)
      • 1. 算法定义
      • 2. 时间复杂度
      • 3. 空间复杂度

第一节:逻辑结构与存储结构

两者对比

1. 逻辑结构

2. 存储结构

说明:存储结构有四种,但是最终的存储方式只有顺序存储和链式存储两种。

1. 顺序存储

int array[6]={1,2,3,4,5,6};  // 定义数组并初始化
printf{"%d\n",array[3]};   // 随机访问第4个元素

说明:地址相当于指针取值。下标相当于随机访问。

2. 链式存储

说明:前一个节点存放下一节点的指针。

// 仅做示例,无法运行
Typdef struct Lnode{
    ElemType data;
    struct Lnode *next;
}Lnode,*LinkList;
Lnode *L;
L=(LinkList)malloc(sizeof(Lnode));
A->next=B;B->next=C;

3. 顺序存储与链式存储分析

第二节:算法的评价(时间复杂度与空间复杂度)

1. 算法定义

算法定义是对特定问题求解步骤的描述。

一个基本算法包括:有穷、确定、可行、输入、输出。

2. 时间复杂度

时间复杂度是指算法中所有语句的频度(执行次数)之和。记为:

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

其中,n是问题的规模;f(n)是问题规模n的某个函数。

随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同(正相关)

常见的时间复杂度

最高阶数越小,说明算法的时间性能越好。

例题:

时间复杂度计算忽略高阶项系数和低阶项

思考:如果一个算法的执行次数为3n^3+5n,那么该算法的时间复杂度是多少?

答案是O(n3),因为忽略了高阶项系数3,和低阶项5n,剩余n3。

3. 空间复杂度

空间复杂度S(n)指算法运行过程中所使用的辅助空间的大小。记为:

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

  • 除了需要存储算法本身的指令、常数、变量和输入数据外,还需要存储对数据操作的存储单元。

  • 若输入数据所占空间只取决于问题本身,和算法无关,这样只需分析该算法在实现时所需的辅助单元即可。

  • 算法原地工作是指算法所需的辅助空间是常量,即O(1)。


http://lihuaxi.xjx100.cn/news/219016.html

相关文章

PPP和PDP激活是什么区别

From: http://www.mscbsc.com/askpro/question.php?qid16261 ppp相当于链路层协议 socket套接字,对tcp/ip协议的封装、应用 gprs上网首先要设置pdp,接着建立ppp连接,ppp连接建立后,就可以进行tcp/ip传输了, 要进行t…

关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题

使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或…

在Blender中创建真实的汽车CGI视觉动画效果

Blender VFX Tutorial Rig & Animate a Realistic Car in Real 大小:1.18G 时长1h 包含项目文件 1280X720 MP4 语言:英语中英文字幕(根据原英文字幕机译更准确) Blender VFX教程绑定&动画真实的汽车 云桥网络 平台获取教程…

子网掩码

子网掩码 from: http://baike.baidu.com/view/878.htm 子网掩码(subnet mask) 又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址 的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合…

关于 智能指针 的线程安全问题

先说结论&#xff0c;智能指针都是非线程安全的。 多线程调度智能指针 这里案例使用的是shared_ptr&#xff0c;其他的unique_ptr或者weak_ptr的结果都是类似的&#xff0c;如下多线程调度代码&#xff1a; #include <memory> #include <thread> #include <v…

C++中 public,protected, private 访问标号小结

第一&#xff1a;private, public, protected 访问标号的访问范围。 private&#xff1a; 只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问&#xff0c;该类的对象也不能访问。 protected&#xff1a; 可以被1.该类中的函数、2.子类的函数、以及3.其友元函数…

做片子留着备用 超级游戏影视配乐音效库36套合集

做片子留着备用 超级游戏影视配乐音效库36套合集 Epic Stock Media 创造数字媒体产品,改变你听到和看到的音频方式在游戏、电影、电视、演出和世界上任何地方的人们消费媒体。 影视配乐音效素材大全 百度一下 云桥网络 平台huo取 教程&#xff01; 所有采样均为&#xff1a;…

Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter

文章目录前言XOR-filter 实现原理xor filter 的构造原理xor filter 构造总结XOR-filter 和 ADD-filter对比XOR-filter 在计算上的优化Ribbon filter高斯消元法总结参考前言 还是起源于前几天的Rocksdb meetup&#xff0c;其中Peter C. Dillinger 这位大佬分享了自己为rocksdb实…