当前位置:首页 > 算法 > 正文内容

算法初步

chanra1n5年前 (2019-10-25)算法6156

假设我让你计算1+2+3+...+5000等于多少,有两种常见的方法:

    1、按部就班累加

    2、使用公式,(首项+末项)*项数/2

假设你使用第一种方法从头到尾不出错的计算,可能也需要几个小时才能计算出来,但是如果你使用公式可能不到一分钟就得出了正确答案。

这就是我要说的算法,走最短的路,才能最快到底终点。


算法有5个特性:

1、需要足够的情报,就像上面的(首项+末项)*项数/2 这个公式一样,你需要知道首项、末项、项数才能正确的计算(需要足够的情报也可称为“输入项”)

2、有穷,既你的算法必须每个步骤都有有限的运行时间,不能无限地运行下去。

3、确定,使用每个不同的情报运行的算法的结果都不一样,但每个情报一定对应一个固定的结果。就像1的平方能也只能为1      2的平方能也只能为4

4、可行,算法一定要是可行的。

5、输出,算法的目的就是要得出结果,没有输出就不叫算法。


在本网站的算法教程或实例中,为了使得受用面更广,我们尽量采用C语言或者伪代码来表达,尽量减少C++和Java的比重。

扫描二维码推送至手机访问。

版权声明:本文由我的FPGA发布,如需转载请注明出处。

本文链接:https://world.myfpga.cn/index.php/post/32.html

分享给朋友:

“算法初步” 的相关文章

队列算法应用

队列算法应用

#include<stdio.h> #define MAXSIZE 100 typedef char DataType; typedef struct{     DataType ...

(LeetCode刷题)1. 两数之和

(LeetCode刷题)1. 两数之和

题目解答一:/**  * Note: The returned array must be malloced, assume caller calls free(). &nbs...

(LeetCode刷题)2. 两数相加

(LeetCode刷题)2. 两数相加

题目解答一:简单实现思路:先遍历完两个链表,把各自的数字存入两个数组,然后对应位置的数相加,若结果大于10就进位到更高位的数。/**  * Definition for singly-linked list->  * s...

(LeetCode刷题)3. 无重复字符的最长子串

(LeetCode刷题)3. 无重复字符的最长子串

题目:解法一:class Solution(object):     def lengthOfLongestSubstring(self,s):        &nb...