算法和算法分析

news/2024/7/5 2:09:52

一个问题抽象为一个抽象数据类型后,仅是形式上的抽象定义,还没有达到问题解决的目的,要实现这个目标,就要吧抽象的变成具体的,即抽象数据类型再计算机上实现,变为一个能用的具体的数据类型!                                                                                                       

算法和算法分析

算法的定义:

        对特定的问题求解方法和步骤的一种描述,它是指令的有限序列,某种每个指令表示一个或多个操作(简而言之,算法就是解决问题的方法和步骤);

算法与程序 :

        算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出;一个问题可以有多种算法,程序是用某种程序设计语言对算法的具体实现:

        程序=数据结构+算法

        数据结构通过算法实现操作

        算法根据数据结构设计程序

算法的特性:

        一个算法必须具备以下五个重要特性

  •         有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时完成;
  •         确定性:算法中的每一条指令必须有确定的含义,没有二义性,在任何条件下,只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出;
  •        可行性:算法是可执行的,算法描述的操作可以通过正经实现的基本操作执行有限次来实现;
  •        输入:一个算法要有零个或多个输入;
  •        输出:一个算法要有一个或多个输出;

算法的设计要求:  

        1.正确性:程序对于精心选择的、典型的苛刻且带有刁难性的几组输入数据且能够得出满足需求的结果!

        2.可读性:算法主要是为了人的阅读与交流,要具有易于人的理解;

        3.健壮性:指当输入非法数据时,算法恰当的做出反应或进行相应处理,而不是产生莫名其的输出结果;

        4.高效性:要求花费尽量少的时间和尽量低的存储需求;

算法分析 :

        一个好的算法首先要具有正确性,然后是健壮性,可读性,在几个方面都满足的情况下,主要考虑算法的效率,通过算法的效率的高低来评价不同算法的优劣程序;

算法的效率通过以下两种方面来考虑:

        1.时间效率:指的是算法所消耗的时间!

        2.空间效率:指的是算法执行过程中所消耗的存储空间!

        注:时间效率与空间效率有时候是矛盾的!

算法时间效率的度量: 

         可以用依据该算法编制的程序在计算机上执行所消耗的时间来度量;

两种度量方法:

        1.事后统计:将算法实现,测算其时间和空间开销;

        2.事前分析:对算法所消耗资源的一种估算方法;

事前分析方法:一个算法的运行时间是指一个算法在计算机上运行所消耗的时间大致可以等于计算机执行一种简单的操作(如赋值、比较、移动等)所需的时间与算法中进行的简单操作次数乘积;

        算法运行时间=一个简单操作所需的时间✖简单操作的次数 

也即算法中每条语句的执行时间之后:

        算法运行时间=\sum每条语句的执行次数(又称为语句的频率)✖该语句执行一次所需的时间

若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数,记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号)简称时间复杂度!

n越大算法执行时间越长:

        排序:n为记录数;

        矩阵:n为矩阵的阶数;

        多项式:n为多项式的项数;

        集合:n为元素的个数;

        树:n为树的结点个数;

        图:n为图的顶点数或边数; 


http://lihuaxi.xjx100.cn/news/1907236.html

相关文章

dart 学习之多个接口 以及mixin学习

如果一个类继承了多个接口,那么需要实现对应的所有方法 abstract class A {printA(); }abstract class B {printB(); }class C implements A, B {overrideprintA() {print("C.a");}overrideprintB() {print("C.b");} }mixin既不是继承也不是接…

保存Google Colab数据文件或目录到Google Drive云盘

一、背景 在Google Colab上使用T4 GPU完成微调训练的模型,保存了模型和训练状态的文件存放在Google Colab /content目录内,需要备份。考虑到下载到本地需要大量的流量,且下次继续训练还会上传,最后确定直接保存到Google Drive&am…

在VisualStudio2022中使用Google安卓模拟器(AVD)进行MAUI开发——环境部署篇

1.个人背景: 工作以来主要使用C#,进行了Winform、WPF的Windows桌面应用开发。 上个月微软发布了.NET8并长期支持,个人也一直有兴趣(实际也是工作推进着)进行跨平台应用开发,如题对MAUI框架进行了一些浅薄的探究。 2.MAUI 微软官网:.NET 多平台应用 UI 文档 - .NET MAUI…

机器视觉:AI赋能缺陷检测,铸就芯片产品的大算力与高能效

导言:近年来,国内芯片行业快速发展,市场对芯片需求的不断增大,芯片的缺陷检测压力也越来越大。芯片产品在生产制造过程中,需要经历数道工序,每个生产环节的材料、环境、工艺参数等都有可能造成产品缺陷。不…

虾皮广告数据:优化广告投放,提升产品销量的关键指南

虾皮(Shopee)广告数据是在Shopee平台上进行广告投放和推广时产生的一系列数据指标。通过对这些数据的分析,卖家可以更好地了解广告效果,优化广告策略,提高产品销量。本文将为您介绍如何利用虾皮广告数据,优…

【数据结构】第二章——线性表(2)

线性表的顺序表示 导言1、顺序表的定义2. 顺序表的实现2.1 静态分配2.1.1 整型顺序表的创建2.1.2 顺序表的初始化2.1.3 顺序表的打印 2.2 动态分配2.2.1 整型顺序表的创建2.2.2 顺序表的初始化2.2.3 修改顺序表的长度 结语 导言 大家好,很高兴又和各位见面啦&#…

【方案】如何利用大数据+云计算技术打造智能环境监控系统?

小编在之前的文章中也提到过基于云计算的环境智能监控系统是什么样的,收到了很多朋友的关注,今天小编就再次根据智能监控为切入点,深入讲解智能环境监控系统方案的详细落实。 1、传感器节点:首先需要选择适合应用场景的各类传感器…

关于PBR策略路由的基础实验

PBR实验 策略路由是基于策略实现数据流量转发,不基于路由表。 // 网络结构实现 lsw: 配置三层交换机 vlan batch 10 20 30 int g0/0/2 port link-type access port default vlan 10 int g0/0/3 port link-type access port default vlan 20 int g0/0/1 port link-t…