首页 > 其他分享 >数据结构:基础概念

数据结构:基础概念

时间:2024-07-22 11:28:38浏览次数:12  
标签:struct 基础 --- 概念 算法 集合 数据结构 数据 输入

一、相关概念

概念

相互之间存在一种或多种特定关系的数据元素的集合。

逻辑结构

集合:所有数据在同一个集合中,关系平等。
线性:数据和数据之间是一对一的关系
树: 一对多
图:多对多

物理结构(在内存当中的存储关系)

顺序存储:数据存放在连续的存储单位中(数组),逻辑关系和物理关系一致
链式:数据存放的存储单位是随机或任意的,可以连续也可以不连续。

数据结构术语

struct Per 数据元素
{
      char name;//数据项—>给变量赋予意义
      int age;
      char phone;
}    
            
    struct Per list[100]; //数据对象-->数据元素的集合(数据结构数组)

1.数据的类型

ADT    abstruct datatype 
是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。
原子类型:int,char,float
结构类型:struct,union

抽象数据类型:数学模型 + 操作 --->ADT     

2.程序

程序 =  数据 + 算法

算法

是解决特定问题求解步骤的描述,计算机中表现为指令的有限序列,每条指令表示一个或多个操作。 

算法的特征

1.输入,输出特性:输入时可选的,输出时必须的
2.有穷性:执行的步骤会自动结束,不能是死循环,并且每一步是在可以接受的时间内完成。
3.确定性:同一个输入,会得到唯一的输出,结果确定。
4.可行性:每一个步骤都是可以实现的。

算法的设计

1.正确性:
        语法正确
        合法的输入能得到合理的结果
        对非法的输入,给出满足要求的规格说明
        对精心选择,甚至刁难的测试都能正常运行,结果正确
2.可读性:便于交流,阅读,理解
3.健壮性:输入非法数据,能进行相应的处理,而不是产生异常
4.高效:存储低,效率高 

算法时间复杂度

也就是执行这个算法所花时间的度量
推算时间复杂度
    1.用常数1 取代运行时间中的所有加法常数
    2.在修改后的运行函数中,只保留最高阶项。
    3.如果最高阶存在且不是1,则取除这个项相乘的常数

2n+3,  --->O(n) 
3n+1; --->O(n)
2n^2 +10;--->O(n^2)
2n^3+3n+1; --->O(n^3)

O(1)<O(logn)<O(n)<O(nlogn)//快排<O(n^2)//冒泡、选择(两个for循环)<O(n^3)//三个for循环<O(2^n)<O(n!)<O(n^n) 后面三个半天出不了结果
越往

标签:struct,基础,---,概念,算法,集合,数据结构,数据,输入
From: https://blog.csdn.net/weixin_71751116/article/details/140600298

相关文章

  • 性能测试概念
    简介性能测试是软件测试的一种类型,旨在评估系统、应用程序或服务在特定负载条件下的性能表现。它涉及模拟真实世界中的用户行为、请求和负载,以便测量系统在不同条件下的响应时间、吞吐量、并发用户数和资源利用率等性能指标。性能测试相关概念并发:并发是指虚拟并发用户数,从业......
  • 数据结构与算法从淬体到元婴day04之堆
    堆堆的定义堆是一种特殊的完全二叉树结构,其每个节点的值都遵循一定的堆属性。堆在物理上是通过数组实现的,逻辑上则表现为树形结构。堆的性质堆总是一棵完全二叉树。堆中某个节点的值总是不大于(最大堆)或不小于(最小堆)其父节点的值。将根节点最大的堆称为最大堆或大根堆,根节点......
  • Animate软件基础:代码片段
    FlashASer:Animate2022零基础应用教程之教师篇https://zhuanlan.zhihu.com/p/555447498FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.com/p/677437436FlashASer:实用的各种AdobeAnimate软件教程https://zhuanlan.zhihu.com/p/675680471“代码片段”面板使得非编......
  • Animate软件基础:启用、编辑和测试按钮元件
    FlashASer:Animate2022零基础应用教程之教师篇https://zhuanlan.zhihu.com/p/555447498FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.com/p/677437436FlashASer:实用的各种AdobeAnimate软件教程https://zhuanlan.zhihu.com/p/675680471FlashASer:Animate2021从入......
  • puppet基础入门
    前言:对于运维人员而言,自动化运维工具是工作必备,不仅可以节省工作时间,还能省心省力,减少人为失误。软工的构建、开发环境都对环境的一致性要求较高。在云下阶段服务器一直采用的是ansible来进行环境配置管理。使用playbook完成服务器环境的初始化交付,命令行对支持服务......
  • Redis底层数据结构-简单动态字符串SDS
    简单动态字符串(simpledynamicstring,SDS)。Redis没有直接使用C语言传统的字符串,而是自己构建了一种简单动态字符串(SDS)的抽象类型。C字符串只会作为字符串字面量(stringliteral)用在一些无须对字符串值进行修改的地方。实现sds.h/sdshdrstruct__attribute__((__packed__)......
  • ngnix简介和基础
    一、Nginx简介Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器是一个模块化软件【1】、安装nginx使用源码包编译安装cd/opt#获取nginx的源码包wgethttps://nginx.org/download/nginx-1.24.0.tar.gz安装源码编译安装的依赖yu......
  • Java基础面试题大全 -001
    1、Java语言有哪些特点1、简单易学、有丰富的类库2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高)3、与平台无关性(JVM是Java跨平台使用的根本)4、可靠安全5、支持多线程6、java生态完善2、面向对象和面向过程的区别面向过程:是分析解决问题的步骤,然后用函数......
  • 【数据结构】【模板】莫队
    莫队使用场景离线算法;区间询问不断修改。能用\(O(1)\)的时间复杂度从\([l,r]\)到\([l+1,r]\)或者\([l,r-1]\)。原理原问题可以转化为为建立一个坐标轴,对于一个询问\((l,r)\),相当于点\((l,r)\),从一个询问\((a,b)\)到\((c,d)\),可以理解为点\((a,b)......
  • linux系统基础:查找文件 20240722
    在Shell中查找文件是一个常见的任务,可以使用多种工具来完成,例如find、locate、grep等。以下是一些使用这些工具的示例。1.使用find命令find命令是最常用的文件查找工具之一,它在指定目录及其子目录下搜索符合条件的文件。示例:查找/home/user目录下所有以.txt结尾的文件。find......