当前位置: 首页 > article >正文

【数据结构-C语言】绪论

文章目录

  • 一、前言
  • 二、基本概念和术语
    • 2.1 数据元素、数据项和数据对象
    • 2.2 数据结构
      • 2.2.1 逻辑结构
      • 2.2.2 存储结构
    • 2.3 时间复杂度

一、前言

数据结构部分是根据严蔚敏老师的《数据结构-C语言版第2版》书中内容整理的。

二、基本概念和术语

2.1 数据元素、数据项和数据对象

数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。

数据元素:是数据的基本单位。也称为元素、记录等。数据元素用于完整的描述一个对象。

数据对象:是性质相同的数据元素的集合,是数据的一个子集。

2.2 数据结构

数据结构:是相互之间存在一种或者多种特定关系的数据元素的集合。数据结构是带“结构”的数据元素的集合,结构就是指数据元素之间存在的关系。

2.2.1 逻辑结构

四类基本结构:集合结构(除了“属于同一集合”的关系外,无其他关系)、线性结构(一对一)、树形结构(一对多)、图形结构(多对多)。

线性结构:线性表、栈和队列(有特殊限制的线性表)、字符串、数组(线性表的推广)、广义表。

非线性表:树、二叉树、有向图、无向图。

2.2.2 存储结构

数据元素在计算机中有两种基本的存储结构,分别是顺序存储和链式存储。

顺序存储:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。通常使用数组类型来描述。所有元素依次存放在一片连续的存储空间中。

链式存储:需要给每个节点附加指针字段,用于存放后续元素的存储地址。所以通常要借助于指针类型来描述。

2.3 时间复杂度

定理:在计算时间复杂度时,可以忽略所有低次幂项和最高次幂的系数,这样可以简化算法分析,也体现出了增长率的含义。

一般都是用最坏时间复杂度来计算。

void Func1(int N)
{
	int count = 0;
	for (int i = 0; i < N; ++i)    // 第一段
	{
		for (int j = 0; j < N; ++j)
		{
			++count;
		}
	}
	for (int k = 0; k < 2 * N; ++k)   // 第二段
	{
		++count;
	}
	int M = 10;
	while (M--)       // 第三段
	{
		++count;
	}
	printf("%d\n", count);
}

最坏情况:F(N) = N² + 2 * N + 10,此时,我们要忽略低次幂项和常数以及最高次幂的系数这样就得到了N²,所以Func1的时间复杂度为:O(N²)。


http://www.kler.cn/a/536851.html

相关文章:

  • p5r预告信生成器API
  • 【截图】selenium自动通过浏览器截取指定元素div的图片
  • 力扣.270. 最接近的二叉搜索树值(中序遍历思想)
  • DeepSeek R1 Distill Llama 70B(免费版)API使用详解
  • 中国城商行信贷业务数仓建设白皮书(第五期:智能决策体系构建)
  • 退格法记单词(类似甘特图)
  • 0207算法:寻找目标值、库存管理
  • 101.对称二叉树 python
  • 【现代深度学习技术】深度学习计算 | 读写文件
  • UdpServer
  • springboot基于微信小程序的仓储管理系统
  • Python——Unicode 编码 或 解码 工具(通用版)
  • PHP:动态网站开发的灵活之选
  • .net的一些知识点
  • 无法使用ip连接服务器的mysql
  • Verilog代码实例
  • 摄像头模块烟火检测
  • 【提示工程】:如何有效与大语言模型互动
  • 蓝桥杯 Java 之输入输出
  • matlab simulink 汽车四分之一模型主动被动悬架-LQR
  • 【Apache Paimon】-- 15 -- 利用 paimon-flink-action 同步 postgresql 表数据
  • MySQL数据库(五)索引1
  • 通过制作docker镜像的方式在阿里云部署前端后台服务
  • cuda手搓CNN识别手写数字
  • 【SpringBoot如何解决跨域问题?】
  • 【STM32系列】利用MATLAB配合ARM-DSP库设计IIR数字滤波器(保姆级教程)