数据结构与算法——算法

article/2025/9/10 5:52:44

😊数据结构与算法——算法

    • 🚀什么是算法?
      • 🚢算法的特征(特性)
    • 🚀算法的设计(要点)
    • 🚀算法效率的度量
      • 🚢事后统计法
      • 🚢事前分析估算法
        • 👻时间复杂度
        • 👻空间复杂度
    • 💻总结

🚀什么是算法?

在这里插入图片描述


📌程序 = 数据结构 + 算法

算法(algorithm)是对特定问题求解的步骤的一种具体描述,算法是指令的有有限序列,其中每一条指令表示一个或是多个操作,用于解决某个问题


🚢算法的特征(特性)


  • 有穷性——一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成(算法必须是又穷的,而程序是无穷的,简单理解就是用有限个步骤解决某个特定的问题)

  • 确定性——算法中每一条指令必须有确切的含义,使用者理解时不会产生二义性。并且,在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出

  • 可行性——一个算法是能行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现的

  • 输入——一个算法有零个或多个输入,这些输入取自与某个特定的对象的集合

  • 输出——一个算法有一个或多个的输出,这些输出是同输入有着某些特定关系的量


🚀算法的设计(要点)


通常一个好的算法有以下要求:

1.正确性,算法应该能够正确地解决求解问题

2.可读性,算法主要是为了让人阅读和交流,其次才是机器执行。可读性好有助于人对算法的理解;晦涩难懂的程序易于隐藏较多的错误,难以调试和修改。

3.健壮性,当输入非法时,算法也能适当地做出反应或进行处理,而不会产生莫名其妙的输出结果

4.高效率与低存储量需求,效率指的是算法执行的时间,对于同一个问题如果有多个算法可以解决,执行时间短的算法效率高。存储量需求指算法执行过程中所需要的最大存储空间。效率与低存储量需求这两者都与问题的规模有关

📌注:算法是可以用伪代码描述


🚀算法效率的度量

算法执行的时间需要通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。度量一个程序的执行时间通常有两种方法

🚢事后统计法

因为很多计算机内部都有计时功能,有的甚至可精确到毫秒级,不同算法的程序可通过一组或若干组相同的统计数据以分辨优劣,但这种方法有两个缺陷:一个是必须先运行依据算法编制的程序;另一个是所得时间的统计量依赖于计算机的硬件、软件等环境因素,有时容易掩盖算法本身的优劣

🚢事前分析估算法

📌一个用高级程序语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:

  • 依据的算法选用何种策略
  • 问题的规模
  • 书写程序的语言,对于同一个算法,实现语言的级别越高,执行效率就越低
  • 编译程序所产生的机器代码的质量
  • 机器执行指令的速度

所以说,同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不 同计算机上运行时,效率均不相同。

一个算法是由 控制结构(顺序、分支和循环三种)和原操作(指固有的数据类型的操作) 构成的,则算法时间取决于两者的综合效果。为了便于比较同一问题的不同算法,通常做法是,从算法中选取一种对于研究的问题(或是算法类型)来说是基本操作的原操作,以该基本操作重复执行的次数作为算法的时间量度

👻时间复杂度

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作:

📌 T ( n ) = O ( f ( n ) ) T(n) = O(f(n)) T(n)=O(f(n))

它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度

所以说,被称为问题的基本操作的元操作应是其重复执行次数和算法的执行时间成正比的原操作,多数情况下它是最深层循环内的语句中的原操作。它的执行次数和包含语句的频度相同。

📌注:语句的频度指的是该语句重复执行的次数

根据输入数据的特点,时间复杂度具有最差平均最佳三种情况,一般我们考虑的时间复杂度都是最坏的那种情况,最坏时间复杂度是包含于最好、和平均两种情况的。

常见种类:
在这里插入图片描述
根据从大到小,常见的算法时间复杂度主要有:

📌 O ( 1 ) < O ( l o g ₂ n ) < O ( n ) < O ( n l o g ₂ n ) < O ( n ² ) < O ( n ³ ) < O ( 2 ⁿ ) < O ( n ! ) < O ( n ⁿ ) O(1)<O(log₂n)<O(n)<O(nlog₂n)<O(n²)<O(n³)<O(2ⁿ)<O(n!)<O(nⁿ) O(1)<O(logn)<O(n)<O(nlogn)<O(n²)<O(n³)<O(2)<O(n!)<O(n)

实例一:

void speaker(int n){int i = 1;while(i<=n){i = i* 2;   //每次翻倍printf("我真的会谢 %d\n", i);}printf("我是真的栓Q %d\n", n);
}

时间复杂度:

📌 T ( n ) = O ( x ) = O ( l o g ₂ n ) T(n) = O(x) = O(log₂n) T(n)=O(x)=O(logn)

实例二:

void speaker(int flag[], int n){  //n为问题规模printf("你今天好吗? \n");for(int i=0; i<n; i++){   //从第一个元素查找if(flag[i]==n){   //找到元素nprintf("我很好 %d\n", n);break;}}
}//flag数组中乱序存放了1~n这些数
int flag[n] = {1.......n};
speaker(flag, n)

时间复杂度:

  • 最好情况:元素n在第一个位置(T(n) = O(1))
  • 最坏情况:元素n在最后一个位置(T(n) = O(n))
  • 平均情况:假设元素n在任意一个位置的概率相同为1/n(T(n) = O(n))

由于算法的时间复杂度考虑的只是对于问题规模n的增长率,则在难以精确计算基本操作执行次数(或语句频度)的情况下,只需求出它关于n的增长率或阶即可

👻空间复杂度

类似于算法的时间复杂度,我们还需要掌握的是算法的空间复杂度,其中n为问题的规模(或大小)

📌 S ( n ) = O ( f ( n ) ) S(n) = O(f(n)) S(n)=O(f(n))

空间复杂度涉及的空间类型有:

  • 输入空间: 存储输入数据所需的空间大小;
  • 暂存空间: 算法运行过程中,存储所有中间变量和对象等数据所需的空间大小;
  • 输出空间: 算法运行返回时,存储输出数据所需的空间大小;


💻总结

以上就是对数据结构与算法中算法的一些介绍和理论知识,算法的时间复杂度和空间复杂度是评判一个程序设计是否高效合理的一种方式,在往后的数据结构中,对数据的操作都要考虑到该算法的时间复杂度和空间复杂度。

🎨觉得不错的话记得点赞收藏呀!!🎨

😀别忘了给我关注~~😀


http://chatgpt.dhexx.cn/article/DppL6s79.shtml

相关文章

数据结构与算法

数据结构与算法 1.数据结构的概念 数据结构指的是一组数据的存储结构。 2.算法的概念 算法是指操作数据的一组方法 3.二者的关系 数据结构是为算法服务的&#xff0c;而算法要作用在特定的数据结构上。 4.最常用的数据结构预算法 数据结构&#xff1a;数组、链表、栈、队列、散…

数据结构与算法学习笔记

本文是王争老师的《算法与数据结构之美》的学习笔记&#xff0c;详细内容请看王争的专栏 。有不懂的地方指出来&#xff0c;我做修改。 数据结构与算法思维导图 数据结构指的是“一组数据的存储结构”&#xff0c;算法指的是“操作数据的一组方法”。 数据结构是为算法服务的&a…

数据结构与算法(总结)

总结&#xff1a; 一、数据结构&#xff08;Data Structure&#xff09; 是数据的组织结构&#xff0c;用来组织、存储数据。算法&#xff08;Algorithm&#xff09; 就是解决问题的方法或者过程。 二、数据结构分为逻辑结构和物理结构。逻辑结构分为集合结构、线性结构、树形结…

Minio 分布式集群部署

文章目录 一、分布式存储可靠性常用方法1. 概述2. 冗余3. 校验 二、分布式Minio优势2.1. 数据保护2.2. 高可用2.3.一致性 三、运行分布式Minio3.1. 启动方案简述3.2. 案例说明3.3. 制作分布式启动脚本3.4. 制作伪分布式启动脚本3.5. 登录minio 四、分布式Minio负载均衡4.1. ngi…

【集群分布式问题】分布式集群时钟同步问题及解决方案

文章目录 一、 时钟不同步导致的问题二、集群时钟同步配置1. 分布式集群中各个服务器节点都可以连接互联⽹2. 分布式集群中一个节点或每个节点都不能访问互联网 一、 时钟不同步导致的问题 时钟此处指服务器时间&#xff0c;如果集群中各个服务器时钟不⼀致势必导致⼀系列问题&…

hadoop-spark完全分布式集群搭建

hadoop-spark完全分布式集群搭建 一、解压spark文件二、修改spark-env.sh文件四、分发给各节点五、主节点配置环境六、启动 本次采用的系统为centos7 hadoop版本为2.7.7 spark版本为2.1.1 链接&#xff1a;https://pan.baidu.com/s/1j4M21s6rURvl2uvZC_wxtQ 提取码&#xff1a;…

minio分布式集群部署

minio分布式集群部署 分布式 Minio 可以让你将多块硬盘或者多台服务器组成一个对象存储服务。由于硬盘分布在不同的节点上&#xff0c;分布式 Minio 避免了单点故障。MinioMinio分布式模式可以帮助你搭建一个高可用的对象存储服务&#xff0c;你可以使用这些存储设备&#xff…

Ubuntu20.04下搭建Hadoop伪分布式集群

Ubuntu虚拟机的安装 VW ware安装Ubuntu虚拟机及环境配置 关闭防火墙 为了减少搭建集群的复杂性&#xff0c;关闭防火墙如果对防火墙很了解可以可以不用关闭开放相应端口即可。借助ufw软件包使操作更方便。 # 安装防火墙工具 sudo apt-get install ufw# 开启 sudo ufw enabl…

Hadoop伪分布式集群的搭建

一、准备虚拟机 1.从网上将VMware下载下来 https://www.vmware.com/content/dam/digitalmarketing/vmware/en/images/gallery/banners/content/hero-generic-1400x350.jpg 2.下载centos https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/ 二、配置网络&…

Hadoop完全分布式集群环境搭建

一、实验环境 主机操作系统&#xff1a;Windows7 以上&#xff08;64 位&#xff09;虚拟机软件&#xff1a;Oracle VM VirtualBox客户机操作系统&#xff1a;CentOS-6.8&#xff08;64 位&#xff09;JDK&#xff1a;1.8&#xff08;Linux 版&#xff09;SSH 连接客户端&…

基于ubuntu的hadoop完全分布式集群搭建

借鉴网址1 借鉴网址2 hadoop官方配置教程 搭建虚拟机&#xff0c;克隆&#xff08;或者先配置JAVA和Hadoop环境再克隆&#xff0c;之后要改主机名和映射以及SSH免密&#xff09; 可以利用xsync集群分发脚本一台机器配置其他机器分发 修改主机名和ip映射 检查 配置ssh免密登录…

Linux 部署Hadoop伪分布式集群教程

首先&#xff1a;我们需要下载一些关于Hadoop伪分布式集群需要的工具与tar包 链接&#xff1a; https://pan.baidu.com/s/1oUw1jDCxfghWsnaWauSHKg 提取码&#xff1a;6s5a 接下来打开虚拟机终端&#xff0c;先创建一个文件夹用来解压Hadoop的tar包 接着使用xshell远程连接到…

Jmeter分布式集群

一、背景 JMeter是一款非常不错的开源压力测试工具&#xff0c;但在使用过程中也会遇到比较多问题排查&#xff0c;例如&#xff1a;起压机&#xff08;客户端&#xff09;请求并发数无法达到既定目标量、报内存溢出错误、错误事务数过高&#xff1b; JMeter有两种运行模式&a…

hadoop分布式集群搭建

Hadoop入门 1. 了解Hadoop 1.1 Hadoop 的优势&#xff08;4高&#xff09; 高可靠性&#xff1a;存在多个数据副本&#xff0c;即使某个元素或存储出现故障&#xff0c;也不会导致数据的丢失 高拓展性&#xff1a;在集群见分配任务数据&#xff0c;可方便的拓展数以千计的节…

一文快速学会hadoop完全分布式集群搭建,很详细

文章目录 前言一、准备工作二、克隆三台虚拟机并进行网络配置克隆虚拟机克隆引导修改网络配置验证验证方式一验证方式二 三、安装jdk和hadoop四、ssh免密登录配置概述生成公钥和私钥把公钥拷贝到三台虚拟机上面去验证把hadoop103 和 hadoop104的免密登录配置安装上面的操作再做…

搭建Hadoop分布式集群的详细教程

目录 写在前面 一、创建虚拟机&#xff0c;安装Centos 二、VMware VMnet8模式共享主机网络配置 三、克隆集群节点HadoopSlave1与HadoopSlave2 四、Linux系统配置 五、Hadoop的部署配置 六、Hadoop集群的启动 写在前面 搭建Hadoop集群的过程比较复杂&#xff0c;本文旨在…

五大分布式集群架构问题解决方案

前言 什么是分布式集群&#xff1f; 这里有两个概念&#xff1a;分布式和集群。 分布式&#xff1a;分布式是指将不同的业务分布在不同的地方或者同一个业务模块分拆多个子业务&#xff0c;部署在不同的服务器上&#xff0c;解决高并发的问题。分布式中的每一个节点&#xf…

redis分布式集群搭建

一、软件环境信息 1、redis版本要求&#xff1a;3.0及之后版本 2、服务节点个数要求: 至少3个主节点&#xff0c;其中主节点不少于节点总数的一半&#xff1b;至多16384个节点&#xff1b;每个主节点至少有一个从节点&#xff0c;故redis集群模式至少需要6个服务节点。 3、…

大数据Hadoop集群搭建 1(伪分布式集群)

目录 Hadoop集群简介 Hadoop集群具体来说包含两个集群&#xff1a;HDFS集群和YARN集群。 Hadoop集群的部署方式分为三种&#xff0c;分别是单机模式、伪分布式模式和完全分布式模式。 环境搭建 1.修改主机名 2.修改时区 4.配置ssh免密 5.安装Hadoop 目录结构 配置文件说…

HADOOP 伪分布式集群搭建

一 linux 环境的搭建 由于笔者这里使用的是vmware 虚拟机 采用centos7 linux 操作系统进行搭建&#xff0c;所以一下示例均以centos7进行示例 1. 搭建vmware 虚拟机 &#xff08;1&#xff09;创建好虚拟机后采用linux ISO镜像文件启动安装centos7操作系统&#xff08;其它…