当前位置: 首页 > news >正文

第二章-算法

第二章-算法

数据结构和算法的关系

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

算法的特性

  • 算法有五个基本特征:输入、输出、有穷性、确定性和可行性。
    1. 输入:算法具有零个或者多个输入。
    2. 输出:算法至少有一个或多个输出。
    3. 有穷性:算法在执行了有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。
    4. 确定性:算法的每一个步骤都具有确定的含义,不会出现二义性。
    5. 可行性:算法的每一步都是必须可行的,也就是说,每一步都能够执行有限次数完成。

算法设计的要求

  1. 正确性
    • 算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。
    • 算法的正确性通常具有四个层次,一般情况下取前三个作为算法是否正确的标准,因为第四个成本很高。
      1. 算法程序没有语法错误。
      2. 算法程序对于合法的输入数据能够产生满足要求的输出结果。
      3. 算法程序对于非法的输入数据能够得出满足规格说明的结果。
      4. 算法程序对于精心选择的、甚至刁难的测试数据都有满足要求的输出结果。
  2. 可读性
    • 算法设计的另一个目的是为了便于阅读、理解和交流。
  3. 健壮性
    • 当输入数据不合法时,算法也能做出相应处理,而不是产生异常或者莫名其妙的结果。
  4. 时间效率高和存储量低
    • 时间效率:算法的执行时间
    • 存储量:算法在执行过程中所需要的最大存储空间。
    • 设计算法应该要尽量满足时间效率高和存储量低的需求。

算法效率的度量方法

  1. 事后统计方法
    • 这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法的程序的运行时间进行比较,从而确定算法效率的高低。
    • 但是这种方法有很大的缺陷:
      1. 必须依靠事先编制好程序,这需要花费大量的时间和精力。
      2. 时间的比较依赖计算机的硬件和软件等环境因素,有时会掩盖算法本身的优劣。
      3. 算法的测试数据设计困难,并且程序的运行时间往往跟测试数据的规模有很大关系,效率高的算法在小的测试数据面前往往得不到体现。
  2. 事前分析估算方法
    • 在计算机程序编制前,依据统计方法对算法进行估算。一个用高级程序语言编写的程序在计算机上运行时所消耗的时间取决于以下因素:
      1. 算法采用的测策略、方法。
      2. 编译产生的代码质量。(软件支撑)
      3. 问题的输入规模。
      4. 机器执行指令的速度。(硬件支撑)
    • 抛开软件和硬件有关的因素,一个程序的运行时间,依赖于算法的好坏和问题的输入规模(输入量的多少)。

函数的渐进增长

  • 给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,我们说f(n)的增长渐进快于g(n)
  • 在计算算法的时间的时候,下面的参数是可以被忽略不计的。
    1. 加法常数
    2. 与最高次项相乘的常数
  • 也就是说,判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,我们应该关注最高次项的阶数。

算法的时间复杂度

  1. 算法时间复杂度定义

    • 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间度量,记作:T(n)=O(f(n))。他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同。
    • 一般情况下随着n增大,T(n)增长最慢的算法为最优算法。
  2. 推导大O阶方法

    1. 用常数 1取代运行时间中的所有加法常数。
    2. 在修改后的运行次数函数中,只保留最高阶项。
    3. 如果最高阶项存在且不是 1,则去除与这个项相乘的常数。

    得到的结果就是大O阶。

  3. 常数阶

    • 大O阶是一个常数
  4. 线性阶

    • 我们要分析算法的复杂度,关键就是要分析循环结构的运行情况。
  5. 对数阶

在这里插入图片描述

  1. 平方阶

常见的时间复杂度

在这里插入图片描述

一般情况下指的是最坏运行时间,平均运行时间固然好,但是一般难以估算。

算法空间复杂度

算法的空间复杂度通过计算算法所需的存储空间实现,算法空间复杂度的计算公式记作:S(n)=O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。

相关文章:

第二章-算法

第二章-算法 数据结构和算法的关系 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法的特性 算法有五个基本特征:输入、输出、有穷性、确定性和可行性。 输入:算法具…...

‘vue’不是内部或外部命令,也不是可运行的程序或批处理文件的原因及解决方法

今天我在用node.js的时候,结果出现如下错误: C:\Users\xiesj> vue -v vue不是内部或外部命令,也不是可运行的程序或批处理文件。 原因: 1、确定npm是否已正确安装? 2、确定vue以及vue-cli已正确安装?…...

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的&#xff0c;一般都是通过API进行操作的。 环境准备 新建Maven项目&#xff0c;导入Maven依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>…...

Qt6之QListWidget——Qt仿ToDesk侧边栏(1)

一、 QLitWidget概述 注意&#xff1a;本文不是简单翻译Qt文档或者接口函数&#xff0c;而侧重于无代码Qt设计器下演示使用。 QListWidget也称列表框类&#xff0c;它提供了一个类似于QListView提供的列表视图&#xff0c;但是它具有一个用于添加和删除项的经典的基于项的接口…...

Prometheus技术文档--基本安装-docker安装并挂载数据卷-《十分钟搭建》

一、查看可安装的版本 docker search prom/prometheus 二、拉取镜像 docker pull prom/prometheus 三、查看镜像 docker images 四、书写配置文件-以及创建挂载目录 宿主机挂载目录位置&#xff1a; 以及准备对应的挂载目录&#xff1a; /usr/local/docker/promethues/se…...

Android 数据库之GreenDAO

GreenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架&#xff0c;将 Java 对象映射到 SQLite 数据库中&#xff0c;我们操作数据库的时候&#xff0c;不再需要编写复杂的 SQL语句&#xff0c; 在性能方面&#xff0c;greenDAO 针对 Android 进行了高度优化&#xff0c;…...

kotlin 编写一个简单的天气预报app(六)使用recyclerView显示forecast内容

要使用RecyclerView显示天气预报的内容 先在grandle里添加recyclerView的引用 implementation androidx.recyclerview:recyclerview:1.3.1创建一个RecyclerView控件&#xff1a;在布局文件中&#xff0c;添加一个RecyclerView控件&#xff0c;用于显示天气预报的列表。 这是一…...

jpa Page 1 of 0 containing UNKNOWN instances错误关于like问题的解决记录

导致这个问题的原因很多&#xff0c;这里记录一下我碰到的问题和解决方法。 网上有说时 pageNo要从0开始&#xff0c;我的不是这个问题。 在使用springboot jpa时&#xff0c;发现使用 t.ip like %?5% 语句&#xff0c;如果数据库记录的ip is null时&#xff0c;将查询不到该…...

Python实战之使用Python进行数据挖掘详解

一、Python数据挖掘 1.1 数据挖掘是什么&#xff1f; 数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中&#xff0c;通过算法&#xff0c;找出其中的规律、知识、信息的过程。Python作为一门广泛应用的编程语言&#xff0c;拥有丰富的数据挖掘库&#…...

scala 加载properties文件

利用java.util.Properties加载 import java.io.FileInputStream import java.util.Properties object LoadParameter {//动态获取properties文件可配置参数val props new Properties()def getParameter(s:String,filePath:String): String {props.load(new FileInputStream(f…...

备战秋招012(20230808)

文章目录 前言一、今天学习了什么&#xff1f;二、动态规划1.概念2.题目 总结 前言 提示&#xff1a;这里为每天自己的学习内容心情总结&#xff1b; Learn By Doing&#xff0c;Now or Never&#xff0c;Writing is organized thinking. 提示&#xff1a;以下是本篇文章正文…...

QT中定时器的使用

文章目录 概述步骤 概述 Qt中使用定时器大致有两种&#xff0c;本篇暂时仅描述使用QTimer实现定时器 步骤 // 1.创建定时器对象 QTimer *timer new QTimer(this);// 2.开启一个定时器&#xff0c;5秒触发一次 timer->start(5000); // 3.建立信号槽连接&am…...

【UE4】多人联机教程(重点笔记)

效果 1. 创建房间、搜索房间功能 2. 根据指定IP和端口加入游戏 步骤 1. 新建一个第三人称角色模板工程 2. 创建一个空白关卡&#xff0c;这里命名为“InitMap” 3. 新建一个控件蓝图&#xff0c;这里命名为“UMG_ConnectMenu” 在关卡蓝图中显示该控件蓝图 打开“UMG_Connec…...

【go】GIN参数重复绑定报错EOF问题

文章目录 1 问题描述2 解决&#xff1a;替换为ShouldBindBodyWith 1 问题描述 在 Gin 框架中&#xff0c;当多次调用 ShouldBind() 或 ShouldBindJSON() 方法时&#xff0c;会导致请求体的数据流被读取多次&#xff0c;从而出现 “EOF” 错误。 例如在api层绑定了参数&#x…...

关于MySQL中的binlog

介绍 undo log 和 redo log是由Inno DB存储引擎生成的。 在MySQL服务器架构中&#xff0c;分为三层&#xff1a;连接层、服务层&#xff08;server层&#xff09;、执行层&#xff08;存储引擎层&#xff09; bin log 是 binary log的缩写&#xff0c;即二进制日志。 MySQL…...

我维护电脑的方法

无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后期主人对它的维护也是决定它寿命的重要因素&#xff01; 你日常是怎么维护你的“战友”的呢&#xff0c;维护电脑运行你有什么好的建议吗&#xff…...

AP51656 电流采样降压恒流驱动IC RGB PWM深度调光 LED电源驱动

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源&#xff0c;用于驱动一颗或多颗串联LED 输入电压范围从 5 V 到 60V&#xff0c;输出电流 可达 1.5A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用电流采样…...

Python爬虫的解析(学习于b站尚硅谷)

目录 一、xpath  1.xpath插件的安装  2. xpath的基本使用  &#xff08;1&#xff09;xpath的使用方法与基本语法&#xff08;路径查询、谓词查询、内容查询&#xff08;使用text查看标签内容&#xff09;、属性查询、模糊查询、逻辑运算&#xff09;  &#xff08;2&a…...

python的virtualenv虚拟环境无法激活activate

目录 问题描述&#xff1a; 解决办法&#xff1a; 解决结果&#xff1a; 问题描述&#xff1a; PS D:\pythonProject\pythonProject\DisplayToolLibs\venv\Scripts> .\activate .\activate : 无法加载文件 D:\pythonProject\pythonProject\DisplayToolLibs\venv\Scripts\…...

uniapp中token操作:存储、获取、失效处理。

实现代码 存储token:uni.setStorageSync(token, res.data.result);获取token:uni.getStorageSync(token);清除token&#xff1a;uni.setStorageSync(token, ); 应用场景 在登录操作中&#xff0c;保存token pwdLogin() {....this.$axios.request({url: .....,method: post,p…...

乐鑫科技 2022 笔试面试题

岗位:嵌入式软件实习生。 个人情况:本科双非电子信息工程,硕士华五软件工程研一在读;本科做过一些很水的项目 ,也拿项目搞了一些奖,相对来说嵌入式方向比较对口。 时间线及面试流程 2021.04.02 笔试 题目分为选择题和编程题,选择题二十题,编程题两题; 选择题基本…...

实现UDP可靠性传输

文章目录 1、TCP协议介绍1.1、ARQ协议1.2、停等式1.3、回退n帧1.4、选择性重传 1、TCP协议介绍 TCP协议是基于IP协议&#xff0c;面向连接&#xff0c;可靠基于字节流的传输层协议 1、基于IP协议&#xff1a;TCP协议是基于IP协议之上传输的&#xff0c;TCP协议报文中的源端口IP…...

Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动地区金融平等

流支付正在成为一种全新的支付形态&#xff0c;Zebec Protocol 作为流支付的主要推崇者&#xff0c;正在积极的推动该支付方案向更广泛的应用场景拓展。目前&#xff0c;Zebec Protocol 成功的将流支付应用在薪酬支付领域&#xff0c;并通过收购 WageLink 将其纳入旗下&#xf…...

Qt--动态链接库的创建和使用

写在前面 在Qt的实际开发中&#xff0c;免不了使用和创建动态链接库&#xff0c;因此熟悉Qt中动态链接库的创建和使用对后续的库开发或使用是非常用必要的。 在之前的文章https://blog.csdn.net/SNAKEpc12138/article/details/126189926?spm1001.2014.3001.5501中已经对导入…...

设计模式十二:享元模式(Flyweight Pattern)

当我们需要创建大量相似对象时&#xff0c;享元模式可以帮助我们节省内存空间和提高性能。该模式通过共享相同的数据来减少对象的数量。 在享元模式中&#xff0c;有两种类型的对象&#xff1a;享元&#xff08;Flyweight&#xff09;和非享元&#xff08;Unshared Flyweight&a…...

【LeetCode】88. 合并两个有序数组 - 双指针

这里写自定义目录标题 2023-8-7 22:35:41 88. 合并两个有序数组 双指针 2023-8-7 22:35:41 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {int last m n ;while(n > 0){if(m > 0 && nums2[n-1] > nums1[m-1]){nums1[las…...

HarmonyOS应用开发的新机遇与挑战

HarmonyOS 4已经于2023年8月4日在HDC2023大会上正式官宣。对广大HarmonyOS开发者而言&#xff0c;这次一次盛大的大会。截至目前&#xff0c;鸿蒙生态设备已达7亿台&#xff0c;HarmonyOS开发者人数超过220万。鸿蒙生态充满着新机遇&#xff0c;也必将带来新的挑战。 HarmonyO…...

Qt中qmake、构建、运行、清理的区别

Qt 中默认的执行顺序&#xff1a;qmake--- 编译 --- 运行。 一、qmake qmake&#xff1a; 根据之前项目指南创建的项目文件 .pro&#xff0c;并且运行 qmake [qmake xx.pro]生成调试 [build-ttt-***-Debug] 或者发布 [build-ttt-***-Release] 目录&#xff08;这个是影子构建…...

【设计模式——学习笔记】23种设计模式——观察者模式Observer(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入原始方案实现实现问题分析 介绍基础介绍登场角色 案例实现案例一类图实现分析 案例二类图实现 观察者模式在JDK源码的应用总结文章说明 案例引入 有一个天气预报项目&#xff0c;需求如下&#xff1a; 气象站可以将每天测量到的温度、湿度、气压等等以公告的…...

【奇葩瑞萨-004】RX系列单片机的GPIO初始化

RX系列单片机的GPIO初始化 与IO口相关的寄存器端口&#xff08;PORT&#xff09;寄存器端口功能控制&#xff08;MPC&#xff09;寄存器MPC.PmnFPS的设置过程MPC寄存器设置注意事项 端口Pmn的初始化不同端口模式下&#xff0c;PORT、MCP寄存器的配置顺序 感想&#xff1a;与STM…...

手机门户网站源码/湖南网站建设推荐

NSDate&#xff1a;是OC中处理日期时间的一个类&#xff0c;可以用来表示时间 获取当前的时间 NSDate *d [NSDate date]; 创建日期时间对象 NSLog输出是当前时间 格林时间 格式化显示时间 NSDate *d1 [NSDate date];NSLog("%", d1);// 格式化日期&#xff0c;时间/…...

太原市建设工程安全监督站网站/服务营销策划方案

集群高可用方案是指主备机模式&#xff0c;利用双机软件在主机发生故障时自动启动备机&#xff0c;让备机接管生产。应用的数据都需要放在外置存储上。主备机自动切换不成功有很多原因。在生产系统中&#xff0c;有过如下问题导致切换失败&#xff1a;主备机应用用户密码不一致…...

电商网站制作/百度指数大数据

没有顺序关系&#xff0c;可前可后。...

工业软件开发工具/宁波网站优化

今天我需要在同事访问我的PHP页面的时候执行一段python脚本&#xff0c;于是我的代码是这样写的&#xff1a;1 <?php 2 function my_workjob(){3 $this->makeLog(ok run workjob);4 if($this->is_internal()){5 $cmd /usr/bin/python /data/script/abc/run.py;6 $ou…...

学做网站需要什么条件/怎么才能在百度上做引流呢

声音断续问题: 切换最下面 stereo就行...

手机网站是怎么做的/软文大全500篇

If you want something youve never had, you must be willing to do something youve never done. 如果你想拥有从未有过的东西&#xff0c;那么你必须去做你从未做过的事。(Thomas Jefferson) 原文载于&#xff1a;爱词霸英语学习网-每日一句...