【数据结构0】数据结构概述

简介: 基本概念数据结构三要素1 逻辑结构2 存储结构3 数据运算算法和算法评价1 算法11算法的特性12算法设计要求2 算法评价21 时间复杂度22 空间复杂度23 数量级比较1 基本概念  数据结构:相互之间存在一种或多种特定关系的数据元素的集合。

1 基本概念

  数据结构:相互之间存在一种或多种特定关系的数据元素的集合。包括三方面:逻辑结构存储结构数据运算

2 数据结构“三要素”

2.1 逻辑结构

  逻辑结构是描述数据元素之间的逻辑关系,它与数据的存储无关,是独立于计算机的。数据的逻辑结构分为线性结构非线性结构线性表是典型的线性结构;是典型的非线性结构。数据的逻辑结构分类如下:

  • 线性结构:数据元素之间存在“一对一”的关系。
  • 树形结构:数据元素之间存在“一对多”的关系。
  • 图形结构:数据元素之间存在“多对多”的关系。
  • 集合关系:数据元素之间除了“同属于一个集合”的关系外,无其他关系。

这里写图片描述

2.2 存储结构

  存储结构又称物理结构,是指数据结构在计算机的实际表示方式,用计算机语言的实现,依赖于计算机语言。数据的存储结构分类如下:

  • 顺序存储:逻辑上相邻的结点存储在物理位置也相邻。优点:可以随机存储,每个结点占用较少空间。缺点:要占用相邻一整块存储空间,会产生外部碎片。
  • 链式存储:不要求逻辑上相邻的结点存储在物理位置也相邻。优点:能充分利用存储空间。缺点:只能顺序存储,每个结点占用较多空间。
  • 索引存储:存储结点要建立附加的索引表,索引表中的每一项叫索引顶(关键字,地址)优点:检索速度快。缺点:占用额外的空间。
  • 散列存储:也叫哈希存储(Hash),由结点的关键字通过散列函数直接计算该结点的地址。优点:检索速度很快。缺点:如果散列函数设计不好会出现存储单元冲突,而解决冲突会带来额外的时空开销。

2.3 数据运算

  施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。

3 算法和算法评价

3.1 算法

  算法(algorithm)是对特定问题的求解步骤的一种描述,它是指令的有限步骤。

3.1.1算法的特性

  • 有穷性:执行有穷步骤后结束。区别于程序的死循环。
  • 确定性:了叫无二义性,对于相同的输入只能得到相同的输出。
  • 可行性:可以通过基本运算实现。
  • 输入性:有0个或多个输入。
  • 输出性:有1个或多个输出。

3.1.2算法设计要求

  正确性易读性(readability)健壮性(robustness)时空效率

3.2 算法评价

  算法效率的度量是通过算法的时间复杂度空间复杂度来描述的。

3.2.1 时间复杂度

  语句的频度是该语句在算法中被重复执行的次数。算法所有语句的频度之和记作T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)数量级。算法的基本运算(最深层循环内的语句)的频度与T(n)同数量级,所以采用算法中基本运算的频度f(n)来分析算法的时间复杂度。因此,算法的时间复杂度也记为:T(n) = O(f(n))
  上式中“O”的含义是T(n)的数量级,其数学定义:若T(n)和f(n)是定义在正整数集合的两个函数,则存在正常数C和n0,使得当n >= n0时,都满足0 <= T(n) < C*f(n)。
  算法的时间复杂度不仅依赖于问题的规模n,也取决于输入数据的初始状态(如各种排序算法)。

三类时间复杂度:

  • 平均时间复杂度:所有可能输入实例在等概率的情况下,算法的期望运行时间。
  • 最好时间复杂度:最好情况下,算法的时间复杂度。
  • 最坏时间复杂度:最坏情况下,算法的时间复杂度。一般考虑最坏情况的时间复杂度,以保证运行时间不会比它更长。

分析一个程序时间复杂度的两个规则:

  • 加法规则:T(n) = T1(n)+T2(n) = O(f(n))+O(g(n)) = O(max(f(n),g(n)))
  • 乘法规则:T(n) = T1(n)*T2(n) = O(f(n))*O(g(n)) = O((f(n)*g(n))

3.2.2 空间复杂度

  空间复杂度S(n):该算法所耗费的存储空间,它是问题规模n的函数。渐进空间复杂度也常简称为空间复杂度,记作:S(n) = O(g(n))
  算法原地工作是指算法所需辅助空间是常量,即O(1)

3.2.3 数量级比较

  O(1) < O(log2 n) < O(n) < O(n*log n) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)
  
这里写图片描述

 
Wu_Being 博客声明:本人博客欢迎转载,请标明博客原文和原链接!谢谢!
【数据结构系列】——《【数据结构0】数据结构概述》http://blog.csdn.net/u014134180/article/details/53898877

如果你看完这篇博文,觉得对你有帮助,并且愿意付赞助费,那么我会更有动力写下去。
Wu_Being 吴兵博客接受赞助费二维码

目录
相关文章
|
8天前
|
存储 机器学习/深度学习 人工智能
数据结构基础(一)
数据结构是计算机科学中的一个重要概念,用于组织和存储数据以便有效地访问和修改。它是计算机科学的基础之一,几乎在所有领域都有应用,包括算法设计、数据库管理系统、编译器构建等。
16 0
 数据结构基础(一)
|
6月前
|
存储 前端开发 C++
C++基础篇之什么是 数据结构
C++基础篇之什么是 数据结构
|
3月前
|
存储 算法
【数据结构】数据结构概述
【数据结构】数据结构概述
43 1
|
6月前
|
存储 算法 编译器
数据结构(一)——数据结构简介
数据结构是相互间存在特定关系的数据的集合,分为逻辑结构和物理结构。
|
6月前
|
存储 NoSQL 索引
数据结构的基本概念
数据结构的基本概念
|
7月前
|
算法 搜索推荐
为什么要学习数据结构?
为什么要学习数据结构?
|
9月前
|
存储 机器学习/深度学习 算法
数据结构-概述
数据结构-概述
|
存储 算法 安全
【C#基础】C# 常用数据结构
编程语言 C# 常用数据结构的介绍。
132 0
【C#基础】C# 常用数据结构
|
存储 NoSQL 索引
数据结构的基本概念(一)
介绍了数据结构的基本概念,适合入门
141 0
|
算法 JavaScript 前端开发