数据结构-基本概念和时空复杂度

本文介绍了数据结构的基本概念,包括逻辑结构(如线性、非线性)和存储结构(顺序、链式、索引、散列)。此外,还探讨了算法的定义、性质和分析,特别是时间复杂度的表示方法和常见复杂度排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

归纳

  • 研究数据元素之间的客观联系(逻辑结构)
  • 研究具有某种逻辑关系的数据在计算机存储器(存储结构)
  • 研究如何在数据的各种关系(逻辑关系和物理关系)的基础上对数据实施一系列有效的基本操作(算法)
  • 分析算法的时间复杂度和空间复杂度

一、概述

1.数据的逻辑结构与存储结构的基本概念;

数据结构的定义和一些基础概念

数据结构的定义:数据元素之间的联系称为结构,数据结构就是具有结构的数据元素合集。

数据结构为二元组:DataStructure=(D,R)

D:Data,数据元素的有限合集,某一个数据对象

R:Relation,Data的关系合集

逻辑结构

数据元素之间具有的逻辑关系(结构)

线性关系:如线性表,数组,堆栈,队列,串,文件等

非线性关系:树,二叉树,图,集合等

存储结构

具有某种逻辑结构的数据,在计算机存储器中的存储方式(存储映像2)

  • 顺序存储结构:用一组地址连续的存储单元依次存放数据元素,
    数据元素之间的逻辑关系通过元素地址直接反映。

  • 链式存储结构:用一组地址任意的存储单元依次存放数据元素,数据元素之间的逻辑关系通过指针间接的反映。

  • 索引存储结构:利用数据元素索引关系来确定数据元素的存储位置,由数据元素本身与索引两部分组成

特点:诸如查找,插入,删除等操作的时间效率较高,但是存储空间开销大

  • 散列存储结构:(哈希)通过事先准备好的散列函数关系与处理冲突的方法来确定元素的存储位置

特点:诸如查找、删除和插入的时间效率较高,主要缺点是确定好的散列关系比较困难,即好的hash function

2.算法的定义、基本性质以及算法分析的基本概念,包括采用大O形式表示时间复杂度和空间复杂度。

算法的定义

算法的定义:算法是用于解决某个特定课题的指令集合。算法就是解决问题的方法。算法是由人们组织起来准备加以实施的一系列有限的基本步骤。

算法的性质

一个完整的算法应该满足下面五个基本性质:

  • 输入
  • 输出
  • 有穷性
  • 确定性
  • 有效性

算法分析

算法分析是指对算法质量优劣的评价。

  • 正确性
  • 时间复杂度
  • 空间复杂度
  • 其他:算法可读性,可移植性,易测试性等等

时间复杂度

一个程序在计算机中运行的时间多少与很多因素有关

  • 问题的规模
  • 编译程序功能的强弱以及所产生的机器代码质量的优劣
  • 机器执行一条指令的时间长短
  • 程序中语句的执行次数
频度统计法

以语句的执行次数的多少作为算法的时间量度的分析方法称为频度统计法

整个算法的频度是指算法中所有的语句频度之和

关于符号O的定义

当且仅当存在正数cccn_0n\_0n_0,使得f(n)≤cg(n)f(n) \leq cg(n)f(n)cg(n)对所有
n≥n_0n \geq n\_0nn_0成立,则称函数f(n)f(n)f(n)g(n)g(n)g(n)同阶,或者说f(n)f(n)f(n)g(n)g(n)g(n)同一个数量级,记作

f(n)=O(g(n))f(n)=O(g(n))f(n)=O(g(n))

称上式为算法的时间复杂度,或者成该算法的时间复杂度为\(O(g(n))\).

其中,n为问题的规模大小的度量。

[例子:矩阵乘法]
void function(int A[][n], int B[][n], int C[][n], int n)
{
	int i,j,k;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{
			C[i][j] = 0;
			for(k=0;k<n;k++)
				C[i][j] = C[i][j] + A[i][k]*B[k][j];
		}
}

以上算法的时间复杂度为O(n3)O(n^{3})O(n3).

常见复杂度排序

O(log_2n)&lt;O(n)&lt;O(nlog_2n)&lt;O(n2)&lt;O(n3)&lt;O(2n)O(log\_{2}n)&lt;O(n)&lt;O(nlog\_{2}n)&lt;O(n^{2})&lt;O(n^{3})&lt;O(2^{n})O(log_2n)<O(n)<O(nlog_2n)<O(n2)<O(n3)<O(2n)

O(1)O(1)O(1)表示算法复杂度为常量,不随我呢提规模的大小而改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值