算法(algorithm)

算法是什么?

算法是指令的集合,是为解决特定问题而规定的一系列操作。

它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出。

一个算法通常来说具有以下五个特性:

  1.输入:一个算法应该以待解决问题的信息作为输入。

  2.输出:输入对应指令及处理后得到的信息。

  3.可行性:算法是可行的,即算法中的每一条指令都是可以实现的,均能在有限的时间内完成。

  4.有穷性:算法执行的指令个数是有限的,每个指令又是在有限时间内完成的,因此整个算法也是在有限时间内可以结束的。

  5.确定性:算法对于特定的合法输入,其对应的输出是唯一的。即当算法从一个特定的输入开始,多次执行同一条指令集结果总是相同的。简单的说,算法就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是算法的逻辑形式,后者是算法的代码形式。

举例:

  如何求0+1+2+3+....+10000=?

 算法一:依次相加(循环):while、do-while、for

 算法二:高斯解法

      首尾相加 * 50 : (1+10000)*10000/2  --->  100 * 101/2

 算法三:使用递归实现

      sum(100) = sum(99)+100 --> sum(99) = sum(98)+99

        ....sum(2) = sum(1)+2 --> sum(1)=1

评价算法优劣的依据:复杂度(时间复杂度和空间复杂度)

算法的复杂性体现在运行该算法时的计算机所需资源的大小。

计算机资源最重要的是时间和空间资源,因此复杂度分为时间复杂度和空间复杂度

时间复杂度是执行算法所需要的计算工作量

空间复杂度是指执行这个算法所需要的内存空间

原文地址:https://www.cnblogs.com/zang1998/p/11553069.html

时间: 2024-10-13 22:21:44

算法(algorithm)的相关文章

数据结构(DataStructure)与算法(Algorithm)、STL应用

catalogue 0. 引论 1. 数据结构的概念 2. 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 2.3.1 二叉树 3. 物理结构实例 3.1 链表 3.1.1 单向线性链表 3.1.2 单向循环链表 3.1.3 双向线性链表 3.1.4 双向循环链表 3.1.5 数组链表 3.1.6 链表数组 3.1.7 二维链表 3.2 顺序存储 4. 算法 4.1 查找算法 4.2 排序算法 0. 引论 0x1: 为什么要学习数据结构 N.沃思(Niklaus  Wirth)教授提

【转】STL算法 <algorithm>中各种算法解析

原文:http://blog.csdn.net/tianshuai1111/article/details/7674327 一,巡防算法 for_each(容器起始地址,容器结束地址,要执行的方法) #include <iostream> #include <algorithm> #include <vector> using namespace std; template<class T> struct plus2 { void operator()(T&

STL 笔记(五) 算法 algorithm

在 STL 中,算法是一系列的函数模版.STL 提供了大概 70 个算法,由头文件 <algorithm>.<numeric>.<functional>组成. 头文件 <algorithm>  是最大的一个,里面常用到的功能有:查找.排序.修改.移除.交换.合并等: 头文件 <numeric>  较小,主要包括数序运算的函数模版: 头文件 <functional>  中则定义了一些类模版,来声明函数对象: 算法的分类: 算法按其实现的

[C++STL]算法&lt;algorithm&gt;中各种算法解析

 一,巡防算法 for_each(容器起始地址,容器结束地址,要执行的方法) #include <iostream> #include <algorithm> #include <vector> using namespace std; template<class T> struct plus2 { void operator()(T&x)const { x+=2; } }; void printElem(int& elem) { co

1.4 算法 - algorithm

1)概述 2)示例 //algorithm find演示 #include <vector> #include <algorithm> #include <iostream> using namespace std; int main() { //find算法示例 int array[10] = {10,20,30,40}; vector<int> v; v.push_back(1); v.push_back(2); v.push_back(3); v.pu

C++ 算法algorithm的使用(更新中...)

概述 std::find() //查找容器中指定元素,查找成功返回该元素第一个迭代器,失败返回最后一个迭代器 1.find()函数 函数声明: template <class InputIterator, class T> InputIterator find (InputIterator first, InputIterator last, const T& val); 输入起始和结束迭代器,查找成功返回该元素第一个迭代器,失败返回最后一个迭代器 原文地址:https://www.c

机器学习常用算法盘点

在本文中,我将提供两种分类机器学习算法的方法.一是根据学习方式分类,二是根据类似的形式或功能分类.这两种方法都很有用,不过,本文将侧重后者,也就是根据类似的形式或功能分类.在阅读完本文以后,你将会对监督学习中最受欢迎的机器学习算法,以及它们彼此之间的关系有一个比较深刻的了解. 下面是一张算法思维导图,点击放大查看. 从学习方式分类 算法对一个问题建模的方式很多,可以基于经历.环境,或者任何我们称之为输入数据的东西.机器学习和人工智能的教科书通常会让你首先考虑算法能够采用什么方式学习.实际上,算法

哈希算法

/*** Hash算法大全<br>* 推荐使用FNV1算法* @algorithm None* @author Goodzzp 2006-11-20* @lastEdit Goodzzp 2006-11-20* @editDetail Create*/public class HashAlgorithms{    /**//**    * 加法hash    * @param key 字符串    * @param prime 一个质数    * @return hash结果    */   

C语言程序设计-第2章 算法-程序的灵魂

一个程序主要包括以下两个方面的信息: 1)对数据的描述.在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式,这就是数据结构(data structure). 2)对操作的描述.即要求计算机进行操作的步骤,也就是算法(algorithm). 算法+数据结构=程序 算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法. 为解决一个问题而采取的方法和步骤,就称为"算法". 例题1.判定2000-2500年中每一年是否为闰年,并将结果输出. 设year为被检测的年份.算