一、数据结构的自我介绍

大家好,饿叫数据结构,是用来提高程序员的程序设计水平的。

官方定义我为:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:Data_Structure=(D,R)    其中D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。------摘自《百度百科》

二、基本概念和术语

2.1 数据(Data)

数值数据:整数、实数、复数

非数值数据:如字符、文字、图形、图像、声音等

2.2数据元素(Data Element)和数据项(Data Item)

数据元素:数据元素是数据的基本单位,在计算机程序中通常被作为一个整体进行考虑 和处理。数据元素有时也被称为元素、结点、顶点、记录等。一个数据元素可由 若干个数据项(Data Item)组成。

数据项:数据项是不可分割的、含有独立意义的最小数据 单位,数据项有时也称为字段(Field)或域(Domain)。

【举例】:

在数据库信息处理系 统中,数据表中的一条记录就是一个数据元素。这条记录中的学生学号、姓名、性别、籍贯、出生年月、成绩等字段就是数据项。

数据项分为两种:一种叫做初等项,如学生的性别、籍贯等,在处理时不能再进行分割;另一种叫做组合项, 如学生的成绩,它可以再分为数学、物理、化学等更小的项。

2.3数据对象

数据对象是性质相同的数据元素的集合,是数据的一个子集。例如,整数数 据对象是{0,±1,±2,±3,…},字符数据对象是{a,b,c,…}。

2.4数据类型

非结构的原子类型:如 C#语言中的基本类型 (整型、实型、字符型等);

结构类型:它的成分可以由多个结构类型 组成,并可以分解。结构类型的成分可以是非结构的,也可以是结构的。例如, C#语言中数组的成分可以是整型等基本类型,也可以是数组等结构类型。

2.5数据结构

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素之间都不是孤立的,而是存在着一定的关系,这种关系称为结构 (Structure)。根据数据元素之间关系的不同特性,通常有 4 类基本数据结构:

(1) 集合(Set):如图 1.1(a)所示,该结构中的数据元素除了存在“同属于一个集 合”的关系外,不存在任何其它关系。

(2) 线性结构(Linear Structure):如图 1.1(b)所示,该结构中的数据元素存在着一 对一的关系。

(3) 树形结构(Tree Structure):如图 1.1(c)所示,该结构中的数据元素存在着一对 多的关系。

(4) 图状结构(Graphic Structure):如图 1.1(d)所示,该结构中的数据元素存在着 多对多的关系。

数据结构的形式化定义为:数据结构(Data Structure)简记为DS,是一个二元组, DS = (D,R)其中:D 是数据元素的有限集合,R 是数据元素之间关系的有限集合。

三 介绍我的军师-算法

3.1算法的特性

有穷性;确定性;输入;输出;能行性。

3.2算法的评价标准

正确性;可读性;健壮性;运行时间;占用空间。

3.3算法的时间复杂度

一个算法的时间复杂度(Time Complexity)是指该算法的运行时间与问题规 模的对应关系。一个算法是由控制结构和原操作构成的,其执行的时间取决于二 者的综合效果。为了便于比较同一问题的不同算法,通常把算法中基本操作重复 执行的次数(频度)作为算法的时间复杂度。算法中的基本操作一般是指算法中 最深层循环内的语句,因此,算法中基本操作语句的频度是问题规模n的某个函 数f(n),记作:T(n)=O(f(n))。

其中“O”表示随问题规模n的增大,算法执行时 间的增长率和f(n)的增长率相同,或者说,用“O”符号表示数量级的概念。

如果一个算法没有循环语句,则算法中基本操作的执行频度与问题规模n无 关,记作O(1),也称为常数阶。如果算法只有一个一重循环,则算法的基本操作 的执行频度与问题规模n呈线性增大关系,记作O(n),也叫线性阶。常用的还有 平方阶O(n2)、立方阶O(n3)、对数阶O(log2n)等。

【例1】 分析以下程序的时间复杂度。

x=n; /*n>1*/
y=0;
while(x >= (y+1)*(y+1))
{
y=y+1; ①
}

解:这是一重循环的程序,while 循环的循环次数为  根号n,所以,该程序段中的语句①的频度是 根号n,则程序段的时间复杂度是 T(n)=O(根号 n)。

四 简单的说一下我的盟友--相关的数学知识

4.1集合

4.2对数

4.3递归

如果一个算法直接调用自己或间接地调用自己,就称这个算法是递归 的(Recursive)。

(1)直接递归(Direct Recursion):比如,在收看电视节目时,如果演播室中也有一台电视机播放的是与当前相 同的节目,观众就会发现屏幕里的电视套有一层层的电视画面。这种现象类似于 直接递归。             (2)间接递归(Indirect Recursion) :  如果把两面镜子面对面摆放,便可从任意一面镜子里看到两面镜子无数个影 像,这类似于间接递归。

函数的递归调用可以理解为:通过一系列的自身调用,达到某一终止条件后, 再按照调用路线逐步返回。递归是程序设计中强有力的工具,有很多数学函数是 以递归来定义的。
         如大家熟悉的阶乘函数,我们可以对n!作如下定义:

根据定义,如要计算 n!(factorial(n)),需要先调用 factorial(n-1)计算 (n-1)!,而要计算(n-1)!需要先调用 factorial(n-2)计算(n-2)!,以此类推,最 终需要调用 factorial(0)计算 0!,然后程序逐步返回,即可计算出 n!。阶乘函数的C#语言实现如下。

public static long fact(int n)
{
if(n <= 1)
{return 1;
}
else
{return n * fact(n-1);
}
} 

把递归作为一种主要用于设计和描述简单算法的工具,对于不熟悉它的编程人员而言是很难接受的。递归算法通常不是解决问题最有效的计算机程序,因为 递归包含函数调用,函数调用需要时空开销。所以,递归比其他替代选择诸如while循环等,所花费的代价更大。

最后,用一句话结束此篇用来勉励园子里的程序猿们。

只有多思索、 多练习,才能提高自己的程序设计水平;否则,书看得再多,提高也不大。-----摘自《数据结构(C#)》

注:本文部分引用《数据结构(C#)》

友情提示

作者: mhq_martin

博客园地址: http://www.cnblogs.com/mhq-martin/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/mhq-martin/p/8504817.html

【数据结构总结1】-数据结构的自述相关推荐

  1. 数据结构与算法的八股文自述(持续更新)

    数据结构与算法的八股文自述 1.1 排序算法 冒泡排序: 冒泡排序只会操作相邻的两个数据.每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求.如果不满足就让它俩互换.一次冒泡会让至少一个 ...

  2. python数据结构推荐书-关于数据结构,有哪些不错的参考书推荐?

    学习编程,数据结构是你必须要掌握的基础知识,那么数据结构到底是什么呢? 其实数据结构就是用来描述计算机里存储数据的一种数学模型,因为计算机里要存储很多乱七八糟的数据,所以也需要不同的数据结构来描述. ...

  3. 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘

    Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 很多人面试时都遇到过这种场景吧? 其实除了上面的几种常见数据结构,还需要加上数据结 ...

  4. 数据结构:线性数据结构(1)-栈(栈,队列,deques, 列表)

    栈,队列,deques, 列表是一类容器,他们数据项之间的顺序由添加或删除的顺序决定,一旦一个数据项被添加,它相对于前后元素一直保持该位置不变.注入此类的数据结构称为线性数据结构. 栈 栈(栈,队列, ...

  5. 【数据结构与算法 - 数据结构基础】什么是数据结构?

    [数据结构与算法 - 数据结构基础]什么是数据结构? 文章目录 [数据结构与算法 - 数据结构基础]什么是数据结构? 1 数据结构包含的三个方面 1.1 数据的逻辑结构 1.1.1 线性结构 数组[A ...

  6. 数据结构系列-初识数据结构

    介绍 数据结构的基本信息 数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称.如:字符串,实数整数.... 数据元素:是数据的基本单位,在计算机中通常被作为一个整体进行考 ...

  7. python数据结构算法_数据结构与算法(Python)

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

  8. 数据结构和非数据结构详解

    在提到数据结构和非数据结构时,好多人都有这样的意识,概念可能说不上来,接下来就来说说结构化数据和非结构化数据的概念以及不同: 结构化数据.非结构化数据是对存储形式的一种数据类型分析,有助于企业细分行业 ...

  9. 数据结构开山篇——数据结构和算法的基本概念

    绪论 文章目录 绪论 为甚要学习数据结构? 数据结构研究的内容 计算机进行数值计算的研究过程 计算机如何进行非数值运算 基本概念和术语 数据 数据元素 数据项 数据对象 数据构成 数据结构 数据类型 ...

  10. C语言数据结构-第一讲-数据结构基础概念-电大

    第一讲数据结构基础概念内容简介 数据是表征客观事物的可记录可识别的符号集合.数据是信息处理的核心基础. 本讲主要介绍了与数据结构有关的基本概念术语: l       数据 l       数据元素 l ...

最新文章

  1. 做事范围是多么多么重要
  2. app每次更新版本时调用js代码提示用户下载更新
  3. ++i 和 i++的实现
  4. IE无法安装Activex控件
  5. 玉柴spn码故障对照表_后处理的故障不总是尿素泵故障,也有可能是这些原因
  6. c treelist绑定mysql_TreeList 绑数据
  7. 50matches:更准确的搜索引擎
  8. MySql多对多关系中外键的应用
  9. 4x对角线之和c语言,如图,▱ABCD的对角线AC、BD交于点O,EF过点O且与BC、AD分别交于点E、F.试猜想线段AE、CF的关系,并说明理由.——青夏教育精英家教网——...
  10. xp系统怎么关闭wmi服务器,WinXP系统如何启用WMI服务,小编教你WinXP系统如何启用WMI服务...
  11. 用Android-X86和VirtualBox打造高性能Android开发环境
  12. 将iPhone的通讯录以拼音排序(转载文章)
  13. Spring框架-JdbcTemplate
  14. 基于MATLAB的数字证件号识别
  15. iPhone X全屏适配
  16. QGIS插件python开发环境配置和PyCharm配置调试环境
  17. 【目标跟踪】帧差法结合卡尔曼滤波行人姿态识别【含GUI Matlab源码 1127期】
  18. k8s-nexus私库
  19. 多测师肖sir_高级讲师_第2个月第33讲解jenkins
  20. OSChina 周二乱弹 —— 怎么制作妹子面

热门文章

  1. 一体广告机实现思路,非常实用(二)
  2. 求两个有序数组的中位数或者第k小元素
  3. hdu 1116 Play on Words
  4. idea mybatis generator插件_在idea中使用mybatis generator逆向工程生成代码
  5. 远程重启h3c路由器_【一号机房】教你怎么配置H3C路由器NAT及远程telnet
  6. oracle 优化逻辑读过高,详述逻辑读与arraysize的关系
  7. ViSP中AprilTag的实时识别与定位
  8. 带有en的单词有哪些_en为前缀的单词
  9. 一台计算机有64,在同一台计算机上使用带有32位和64位Altium设计软件的数据库元件库...
  10. linux do_irq 报错 代码,linux - 内核函数asm_do_IRQ()中的irq与我在模块中请求的不同 - 堆栈内存溢出...