数据,数据元素,数据项和数据对象

数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。

数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。
比如 畜类 牛、马、羊、鸡、猪、狗等动物当然就是畜类的数据元素。

数据项:一个数据元素可以由若干个数据项组成。
比如人这样的元素,可以有眼、耳、鼻、嘴等数据项,也可以有姓名、年龄、性别等数据项。
数据项是数据不可分割的最小单位。

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

成员信息
姓名 班级
小庄 计科222
小侯 体教232
课程信息
课程代码 课程名称
001 高等数学
002 军事理论

以这两个表格为例:

这两个表为数据;

单个的一张表为数据对象

两个表中的每一行都是数据元素

而表中的姓名,班级,课程代码等信息为数据项

范围大小关系:数据>数据对象>数据元素>数据项。

数据结构

 数据结构是带“结构”的数据元素的集合。

逻辑结构

逻辑结构的两个要素:一是数据元素,二是关系

存储结构

分为顺序存储结构链式存储结构

有个博主写的非常详细:https://blog.csdn.net/liu17234050/article/details/104252533

抽象数据类型(ADT)

作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。

定义:一个数学模型以及定义在该模型上的一组操作。

关键:使用它的人可以只关心它的逻辑特征,不需要了解它的存储方式。定义它的人同样不必要关心它如何存储。

例:线性表这样的抽象数据类型,其数学模型是:数据元素的集合,该集合内的元素有这样的关系:除第一个和最后一个外,每个元素有唯一的前趋和唯一的后继。可以有这样一些操作:插入一个元素、删除一个元素等。

定义格式:

ADT 抽象数据类型名{

数据对象:<数据对象的定义>

数据关系:<数据关系的定义>

基本操作:<基本操作的定义>

}ADT 抽象数据类型名

时间复杂度计算

一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为算法 的时间复杂度。

找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。

// 请计算一下Func1中++count语句总共执行了多少次?
void Func1(int N)
{
int count = 0;
for (int i = 0; i < N ; ++ i)
{for (int j = 0; j < N ; ++ j){++count;        //这里count++执行N*N次}
}for (int k = 0; k < 2 * N ; ++ k)
{++count;        //这里count++执行2*N次
}
int M = 10;
while (M--)
{++count;        //这里count++执行M次
}//所以++count总共执行  N^2+2*N+M 次

实际中我们计算时间复杂度时,我们其实并不一定要计算精确的执行次数,而只需要大概执行次数,那么这 里我们使用大O的渐进表示法。

大O的渐进表示法

O()括号里面的数更多的表达的是这个算法的量级,大O是一个估算,并不是准确的执行次数。

推导大O阶方法:

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

2、在修改后的运行次数函数中,只保留最高阶项

3、如果最高阶项系数存在且不是1,则去除与这个项目相乘的常数。得到的结果就是大O阶。

大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数。

举个例子:

// 计算Func2的时间复杂度?
void Func2(int N)
{int count = 0;for (int k = 0; k < 2 * N ; ++ k){++count;        //2*N}int M = 10;while (M--){++count;        //10}printf("%d\n", count);
}//2*N+10
//当N趋于无限大的时候,10和2对于整体的效果影响不大,所以舍去得到N
//注意N和2*N+10是一个量级的
//
//所以Fun2的算法复杂度为   O(N)=N

另外有些算法的时间复杂度存在最好、平均和最坏情况:

最坏情况:任意输入规模的最大运行次数(上界)

平均情况:任意输入规模的期望运行次数

最好情况:任意输入规模的最小运行次数(下界)

数据结构1.1基本概念以及时间复杂度的计算相关推荐

  1. 【数据结构与算法】算法的时间复杂度

    Python\数据结构与算法\算法\算法的时间复杂度 1. 时间复杂度-概念 2. 时间复杂度-常例分析 2.1-时间复杂度-顺序表(越小用的时间越少,即越好) 2.2-时间复杂度-O(1) 2.3- ...

  2. Python数据分析实战【第三章】2.5-Pandas数据结构Dataframe:基本概念及创建【python】

    [课程2.5] Pandas数据结构Dataframe:基本概念及创建 "二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值.字符串.布 ...

  3. 数据结构之树的概念以及结构

    数据结构之树的概念以及结构 1.树的概念 树是一种非线性的数据结构,是由n(n>=0)有限节点的组成的一个具有线性关系的集合. 叫树的原因是因为它看起来像是一颗倒挂的树,只不过是根朝上,叶朝下 ...

  4. Revit(8)-数据结构-类别、族概念

    系列文章目录 Revit开发中异常记录 Revit (1) - CAD - 获取图层 Revit (2) - CAD - 获取CAD文字 Revit (3) - 二开 -创建柱子 Revit (4) ...

  5. 【数据结构】二叉树的概念及结构

    提示:学习此篇博客之前,可以先学习[数据结构]树的概念及结构. 文章目录 前言 1.二叉树的概念 2.特殊的二叉树 3.二叉树的性质 4.二叉树的存储结构 前言 普通二叉树,很难构成现实的应用场景,但 ...

  6. 算法时间复杂度的计算:从几道题目讲起

    引子 最近再来回顾一下算法相关的知识,那自然,首先要学习的就是 时间复杂度的概念,以及其计算方式.下面,我就会简单地介绍下时间复杂度,以及会给出几道典型的时间复杂度计算题. 时间复杂度 将算法中基本操 ...

  7. 数据结构考研:数据结构的三要素:逻辑结构,存储结构,数据计算的详细区分与讲解(软件工程/计算机/王道论坛)

    一.问题背景 不管是计算机专业的考研初试还是工作面试,数据结构都是很重要的课程.而博主最近看的王道论坛2020的数据结构开篇就有数据结构的三要素:逻辑结构,存储结构,数据计算,而在数据结构的考研真题和 ...

  8. 排序算法之快速排序及其时间复杂度的计算

    快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分 ...

  9. 时间复杂度的计算详解

    时间复杂度计算分为以下三个步骤(推导大O阶): 1.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次数函数中,只保留最高阶项 3.如果最高阶项存在且不是1,则去除与这个项相乘的常数,得到的结 ...

  10. 数据结构与算法笔记(一)—— 引入概念、时间复杂度

    一.前沿 我们为什么要学习数据结构和算法? 我们举一个可能不太恰当的例子: 如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代码便是士兵和武器. 那么数据结构和算法是什么? ...

最新文章

  1. linux net.ipv4.ip_forward 数据包转发
  2. 日常生活中的法语积累2
  3. hihoCoder #1457 : 后缀自动机四·重复旋律7
  4. 3-12形参和实参 局部变量
  5. Django 2 零基础 - 待办清单网站
  6. tengine安装问题
  7. C4C的导航菜单的问题,disable这个属性,就会变成正常的两级菜单
  8. 方法~作用于对象~失败_消息三:ActiveMQ Topic 消息失败重发
  9. CentOS6.8 下MySQL5.6.29主从复制架构配置
  10. 太慢不能忍,CPU 拿硬盘和网卡开刀了!
  11. 用于语音识别的数据增强
  12. 利用定时器中断方式控制led灯的闪烁速度_实验四 LED点阵
  13. 使用Requests+xpath实现简单的数据爬取
  14. 使用MyEclipse的自动提醒功能卡死MyEclipse的激活
  15. 超效率dea matlab,求高人帮忙关于超效率DEA模型编程
  16. opencv (C语言) 系列一:各函数基本应用及图片反色
  17. freeradius mysql ad_freeradiusmysql简单配置一例
  18. LCL三相PWM整流器数学模型
  19. 无限容量还不限速的网盘,了解一下~
  20. Google SketchUp,一款很有趣的软件,可以创建你所想要的任何3D模型

热门文章

  1. 最新版苹果字体设计的秘密和改变
  2. 【行人重识别论文阅读笔记——PCBRPP】
  3. System01 DAY06(用户账号应用)
  4. 中国传媒大学计算机课程表,中国传媒大学新闻学院课程表.docx
  5. Doman coloring(域着色)
  6. 2019年oracle的市场占有率,2019动o+排行_2019年4月数据库流行度排行:Oracle持续增长股价获新高...
  7. 基于机器学习随机森林方式的姿态识别算法
  8. 小编说雷军说创业初期如何找人 留住核心人才?
  9. 日本核辐射究竟有多可怕?
  10. 【优化方法GD、SGD、SAG介绍】