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

数据结构与算法——算法和算法分析

   🍓个人主页:bit..

 🍒系列专栏:Linux(Ubuntu)入门必看   C语言刷题

目录

一.基本概念

二. 算法时间效率的度量

三. 算法运算时间


一.基本概念

        算法的定义:对待特定问题求解方法和步骤的一种描述,他是指令的有限序列(其中每条指令表示有一个或多个操作)

        算法的描述:

  •        中文,英文
  •        流程图   NS流程图
  •        伪代码:类语言 eg:类C语言
  •        程序代码:C/C++语言    java语言……

                                

二. 算法时间效率的度量

1.依据该算法编制的程序在计算机上执行所消耗的书简来度量

2.度量算发消耗时间

  •    事后统计:将算法实现,测算时间与空间开销        缺点:环境好坏,掩盖了算法本身的优劣
  •    事前分析:对算法所消耗资源的一种估计方法
  •    NS流程图 

 三.算法与程序

        1.算法:解决问题的一种方法或一个过程,考虑如何将输入转化成输出,一个问题可以有多种算法

        2.程序:是用某种程序设计语言对算法的具体实现

        

算法特性:

  1. 有穷性           执行步骤和执行时间
  2. 可执行性       每条指令有确切的含义,没有二义性,在任何条件下,只有唯一的一条执行路                       径,即对于相同的输入只能得到相同的输出
  3. 输入               有零个或者多个输入
  4. 输出               有一个或者多个输出

算法设计要求:

正确性:

        1.无语法错误

        2.对于几组输入数据能够得到满足要求的结果

        3.对于精心选择的,典型苛刻且带有刁难性的几组数据能够得到满足要求的结果

        4.一切合法的输入数据都能够得到满足要求的结果

可读性:

        易语阅读交流

健壮性 (鲁棒性):

        输入非法数据算法恰当的做出反应或进行相应处理,而不是产生莫名其妙的结果

高效性:

        存储空间小,且效率高。

三. 算法运算时间

  每条语句执行一次所执行的时间,一般随机器而异的,取决于机器指令的性能,速度以及编译器的代码质量,是有机器本身软件决定的,与算法无关。

    所以:假设执行每条语句所需要的时间均为单位时间。

                即改语句执行一次所需要的时间   =>(趋近于)  1

               算发运行时间=\sum语句频度

相关文章:

  • Qt+ECharts开发笔记(五):ECharts的动态排序柱状图介绍、基础使用和Qt封装Demo
  • 论文笔记系列:主干网络(三)-- VGG
  • 自己制作并发布720°VR全景图
  • JWT——跨域认证解决方案
  • python计算微积分
  • 吃灰树莓派应用之HomeAssistant安装与Tuya插件应用
  • 基于Springboot+Vue实现智能停车场管理系统
  • 【模型训练】YOLOv7行人摔倒检测
  • 基于JAVA校园外卖系统Web端计算机毕业设计源码+系统+数据库+lw文档+部署
  • 4_卷积神经网络
  • [C++基础]-入门知识
  • Java8-19新特性(附官网传送门)
  • 加解密相关
  • 【TypeScript教程】# 6:使用webpack打包ts代码
  • Pytorch环境配置(anaconda安装+独显+CUDA+cuDNN)
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [deviceone开发]-do_Webview的基本示例
  • 2017年终总结、随想
  • 78. Subsets
  • CSS盒模型深入
  • js数组之filter
  • Linux Process Manage
  • ng6--错误信息小结(持续更新)
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • socket.io+express实现聊天室的思考(三)
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 编写高质量JavaScript代码之并发
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 记一次用 NodeJs 实现模拟登录的思路
  • 聊一聊前端的监控
  • 排序算法学习笔记
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 思维导图—你不知道的JavaScript中卷
  • 微信小程序--------语音识别(前端自己也能玩)
  • 移动端唤起键盘时取消position:fixed定位
  • Mac 上flink的安装与启动
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • #Lua:Lua调用C++生成的DLL库
  • $.ajax()
  • (HAL库版)freeRTOS移植STMF103
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (分布式缓存)Redis哨兵
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .form文件_一篇文章学会文件上传
  • .htaccess配置常用技巧
  • .Mobi域名介绍
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)