首页 > 其他分享 >数据结构·基本概念

数据结构·基本概念

时间:2024-03-02 22:14:04浏览次数:27  
标签:线性表 int 复杂度 元素 基本概念 -- 数据结构 顺序存储

Data Structure Notes

Author : "ebxeax"
Version : 1.0
Refresh Date 2020.11.26
Description : 
Just record and review some points about Data Structure.
Have mistakes that please correct it yourself.

数据结构的基本概念

1.数据

2.数据元素:

数据的基本单位,一个数据元素可有若干个数据项构成,数据项是不可分割的最小单位

3.数据类型

4.抽象数据类型(ADT[Abstract Data Type]):

数学模型在计算机的一种实现,包括数据对象、数据关系、基本操作,如建立一个有限状态机模型

5.数据结构:数据元素之间的关系称之为结构,数据结构包括三方面:逻辑结构、存储结构、数据运算(程序=算法+数据结构)

6.逻辑结构:数据间的逻辑关系,与数据存储独立,分为线性结构和非线性结构

graph TD 逻辑结构--线性结构 逻辑结构--非线性结构 线性结构--一般线性表 线性结构--受限线性表 线性结构--线性表推广 受限线性表--栈和队列 受限线性表--串 线性表推广--数组 线性表推广--广义表 非线性结构--非线性表 非线性表--集合 非线性表--树形结构 非线性表--图形结构 树形结构--一般树 树形结构--二叉树 图形结构--有向图 图形结构--无向图

7.物理结构:数据元素的表示以及关系的表示,主要有:顺序存储、链式存储、索引存储、散列存储

8.算法评估

(1)特性:有穷、确定、可行、输入、输出

(2)时间复杂度:衡量算法随问题规模的增大,算法执行的时间增长的快慢

T(n)=O(f(n)),f(n)为算法运算频度,一般采用最坏情况下的时间复杂度

计算方法:取算法时间增长最快的函数项,忽略其系数

a加法规则:

$$
T(n)=T_1(n)+T_2(n)=O(f(n))+O(g(n))=O(max(f(n),g(n)))
$$

多项式相加,只保留最高阶的项,且系数变为1

b乘法规则:

$$
T(n)=T_1(n)*T_2(n)=O(f(n))*O(g(n))=O(f(n)*g(n))
$$

多项式相乘,都保留

从左到右性能依次降低:

$$
O(1)<O(log_2n)<O(n)<O(nlog_2n)<O(n^2)<O(n^3)<O(2^n)
$$

单循环体型:

例题1:计算下列程序的时间复杂度

```C++
int i,sum	//执行1次
sum=0	//执行1次
for(i=0;i<=n;i++)//int i=0执行1次,i<=n执行n+2次,i++执行n+1次
	sum+=i;	//执行n+1次
```

时间分析: 该算法执行了3n+6个语句。 假设每个语句执行时间一致,均为常数t。则总时间 
$$
T=(3n+6)*t
$$
随着问题规模n的增大,总时间的增长率与n的增长率一致,所以复杂度为
$$
O(n)
$$


结论: 

 复杂度是关于增长率的,所以可以直接忽视常数项

  一般可以直接关注循环段基本操作语句

  ```c++
  sum+=i;
  ```
 
  

 的执行次数

例题2:

int sum,i;
sum=0;
for (i = 1;i <= n;i=2*i){
	sum=sum+i;

时间分析:

i 取值:1,2,4,8…
满足条件:2^

标签:线性表,int,复杂度,元素,基本概念,--,数据结构,顺序存储
From: https://www.cnblogs.com/Carrawayang/p/18049330

相关文章

  • 数据结构·查找算法
    查找1.顺序查找一般表(1)代码typedefstruct{ElemType*elem;inttableLen;}SSTable;intsearchSeq(SSTableST,ElemTypekey){ST.elem[e]=key;//设置哨兵for(inti=0;i<ST.tableLen;i++)returni;//存在返回,不存在返回1}(2)设......
  • 数据结构·线性表
    线性表一、逻辑结构和基本操作1.逻辑结构具有相同数据类型的n个数据元素的有限序列,表长n,n=0为空表表头:第一个元素表尾:最后一个元素除第一个元素外,每个元素有且仅有一个直接前驱除最后一个元素外,每个元素有且仅有一个直接后继2.基本操作initList(&L);len(L);locateE......
  • 数据结构之线性表(顺序存储表)
    php<?php/***CreatedbyPhpStorm.*User:SillyCat*Date:2024/3/2*Time:18:47*/classSequenceList{private$item=array();private$length=0;publicfunction__construct(){//$this->item=$item;......
  • 【习题】5.1 一阶线性微分方程的基本概念
    [T050101]设\(A\)为\(n\timesn\)常数矩阵,\(\Phi(t)\)是方程组\(X'=AX\)的标准基解矩阵\((\Phi(0)=E)\),证明\(\Phi(t)\Phi^{-1}(t_0)=\Phi(t-t_0)\),其中\(t_0\)是常数.    证由题设可知\(\Phi'(t)=A\Phi(t)\),将\(t\)换为\(t-t_0\),则\(\Phi......
  • 基础数据结构->set&&map
    set&&mapBEGIN:惜墨如金set用法#include<bits/stdc++.h>usingnamespacestd;voidthe_map(){map<string,int>ds;stringkis="kis";ds[kis]=2;ds["a+a"]=3;ds["b+"]=4;ds["c-"]=5;//这样就可将这个“数......
  • Redis基础数据结构
    简单动态字符串SDS在Redis里面字符串随处可见比如//设置一个(key,value)为msg和helloworld的键值对setmsg"helloworld"在这里,msg和helloworld都是一个字符串.Redis自己构建了一个名为SDS(SimpleDynamicString简单动态字符串)的类,用于作为Redis底层字符串的默认实......
  • 了解鸿蒙系统的基本概念、特点和应用场景
    鸿蒙系统(HarmonyOS)是华为公司开发的一款分布式操作系统,旨在满足全场景智慧生活需求。它采用微内核设计,具备高安全性、高性能和可扩展性等特点。鸿蒙系统的应用场景广泛,可以应用于智能手机、平板电脑、智能穿戴设备、智能家居、智能汽车等多种终端设备。鸿蒙系统的基本概念包括......
  • 多媒体基本概念
    多媒体容器多媒体容器也称为多媒体封装格式,用于标识和交错组织不同的数据类型。简单一点的容器格式可以包含不同类型的音频格式,而更高级的容器格式则可以支持多个音频和视频流、字幕、章节信息和元数据,以及同时回放各种流所需的同步信息。有些容器是音频专用的:AIFF(IFF文件格......
  • [思维] [树形数据结构] CF1379F1 Chess Strikes Back (easy version)
    注意到棋盘大小为$2n,2m$,共$2nm$个白格,同时国王数量为$nm$,尝试将$2$个国王捆绑在一块,即将棋盘均匀划分为若干个$2*2$大小的大格子。在此基础上观察,显然同一个大格子内的两个白格不能同时放置国王,同时大格子数量为$nm$,因此问题转化为判定能否使得所有大格子都有一个国王,......
  • 8-2. 数据结构及坐标保存加载
    使用ISaveable标识可保存的数据现在C#也像Java一样,接口可以写默认实现。大括号的写法和=>的写法是完全一致的使用DataManager来统一管理所有数据usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.InputSystem;pu......