首页 > 编程语言 >算法基础

算法基础

时间:2024-04-01 16:15:33浏览次数:28  
标签:结果 产生 基础 对于 程序 算法 输入

1. 算法的特性

  1. 输入输出
    算法具有零个或者多个输入,同时,算法具有至少一个的输出。

对于在屏幕上打印”Hello World”一样,你可以不需要有任何的输入,直接输出得到结果即可,而对于一个没有输出的算法,没有任何意义。

  1. 确定性
    算法的每一步都具有确定的含义,无二义性。任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出。

请注意,如果算法的目的是产生一个随机数字,每一次运行产生了不同的结果,看上去好像违反了算法确定性原则,但计算机产生随机数亦是使用一种(或多种)算法解决,以线性同余产生随机数为例,其利用了CPU时间的不同产生的不同的结果,当CPU的时间完全一样的时候依旧会产生相同结果,只不过人类无法察觉到如此精确的时间区别。

3)有穷性
一个算法总是需要(输入合法的情况下)在有限的步骤结束,即每个算法需要在有穷的时间内完成。

这是算法与程序的最主要的区别,程序可以无限制循环的执行下去。对于此,你可以理解为一个算法必须要有一个”边界“,即使一个算法需要计算机连续运算50年,但依旧是有穷的,只不过这个算法意义已经不是很大了。

4)可行性
一个算法是可以被执行的,即算法中的每个操作都可以通过已经实现的基本运算执行有限的次数完成。
尽管在目前计算机解存在着没有实现成功的极为复杂的算法,但是并不能说的上是无法实现,只不过是受到现在的工具和人类的大脑限制了,这属于理论研究的范围。

  1. 算法设计要求
  1. 正确性
    正确性(Correctness)指的是该算法能够满足预先指定的功能与性能的需求,即能够得到正确答案。

其大致可以分为以下四点:

a)该算法中不含任何语法错误。

b)程序对于几组输入数据能够得到满足需求的结果。

c)程序对于非法的输入也能够得到满足需求说明的结果(如抛出异常)。

d)程序对于精心挑选的严苛数据依旧能够产生满足需求的结果。

2)健壮性
健壮性(Robustness)指的是当输入数据不合法时,算法也能做出相关的处理,而不是产生不可预计的效果。

3)可读性
可读性(Readability)指的是算法是可以阅读,理解和交流的。

4)耗时低,占用空间少
运行时间(Running time)与占用空间(Storage space)概念,在设计算法时,我们总是希望能够更少的使用时间和空间达成我们的目标。
算法与数据结构的研究的重点就是为了让程序运行块,占用空间低。

标签:结果,产生,基础,对于,程序,算法,输入
From: https://www.cnblogs.com/zx-demo/p/18108687

相关文章

  • 数据结构与算法入门
    数据结构与算法入门1、数据结构介绍程序(Program)=数据结构(DataStructure)+算法(Algorithm)”数据结构是计算机专业中一门综合性的基础课程,它是介于数学,计算机硬件和计算机软件的三者之间一门核心课程,同时,数据结构是设计数据库,程序,操作系统,游戏等等设计方面的重要基础,是绝大多数计......
  • 1.网络基础基础了解
    一、环境准备,软件包ensp(先装下面三个)virtualboxwinpcapwireshark二、数据通信的原理从个方面说:(1)IP地址:(2)路由技术:(3)DNS域名系统1、IP地址1)、IP的基本认识IP在TCP/IP参考模型中处于第三层1️⃣:应用层,是一些协议(如:ftp文件传输,ssh远程登录,http网络请求)2️⃣:传......
  • DIY 3 种分库分表分片算法,自己写的轮子才吊!
    大家好,我是小富~前言本文是《ShardingSphere5.x分库分表原理与实战》系列的第六篇,书接上文实现三种自定义分片算法。通过自定义算法,可以根据特定业务需求定制分片策略,以满足不同场景下的性能、扩展性或数据处理需求。同时,可以优化分片算法以提升系统性能,规避数据倾斜等问题。在......
  • 代码随想录算法训练营第二十五天(回溯2)|216. 组合总和 III、17. 电话号码的字母组合(JA
    文章目录216.组合总和III解题思路源码17.电话号码的字母组合解题思路源码216.组合总和III找出所有相加之和为n的k个数的组合,且满足下列条件:只使用数字1到9每个数字最多使用一次返回所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可......
  • 代码随想录算法训练营第二十七天(回溯3)|39. 组合总和、40. 组合总和 II、131. 分割回文
    文章目录39.组合总和解题思路源码40.组合总和II解题思路源码131.分割回文串解题思路源码39.组合总和给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回......
  • php采用aes算法,字符编码utf8,填充模式ECB,填充:ZeroPadding,编码:base64,实现加密
    原文:https://blog.csdn.net/yinxinyue0621/article/details/129813334一、php:三种填充模式的区别(PKCS7Padding/PKCS5Padding/ZeroPadding)(一)常见的三种填充方式:我们知道某些加密算法要求明文需要按一定长度对齐,叫做块大小(BlockSize),比如16字节,那么对于一段任意的数据,加密前需要......
  • 搜索算法练习——拼图问题
    拼图问题是一个经典的搜索问题,其中目标是将一个拼图板恢复到初始状态,或者找到一个初始状态到目标状态的最短路径。我们可以使用广度优先搜索(BFS)来解决这个问题,将每个状态作为节点,并尝试所有可能的移动。fromcollectionsimportdequedefswap(board,i,j,ni,nj):......
  • 一文搞定opencv中常见的关键点检测算法(附代码)
    作者:K.Fire|来源:计算机视觉工坊前言角点时图像中存在物体边缘角落位置的点或者一些特殊位置的点,角点检测(CornerDetection)是计算机视觉系统中获取图像特征的一种方法,是运动检测、图像匹配、视频跟踪、三维重建和目标识别的基础。本篇文章将介绍opencv中常用的几种角点检......
  • FFTW 最快的FFT 快速傅里叶算法实现
    FFTW isaCsubroutinelibraryforcomputingthediscreteFouriertransform(DFT)inoneormoredimensions,ofarbitraryinputsize,andofbothrealandcomplexdata(aswellasofeven/odddata,i.e.thediscretecosine/sinetransformsorDCT/DST).We......
  • 测试基础和功能测试
    一、质量模型1.功能性:功能数量、功能正确实现、错误处理情况2.性能3.兼容性:浏览器兼容性:谷歌,火狐,Edge4.易用性:简洁、友好、流畅、美观5.可靠性6.安全性7.可移植性8.可维护性*.界面布局a.布局与UI原型一致b.图片与文字准确与UI原型无误二、测试流程1.需求......