第一个算法

【程序1】  
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子有多少对?

算法一:


public class ArithmeticTest1 {
public static void main(String[] args){
int[] count= new int[1000];long start=System.currentTimeMillis();
for(i=1;i<=1000;i++) {
if (i == 1 || i == 2) {
System.out.println(i + ":" + 1);
count[i]=1;
}else{
count[i]=count[i-1]+count[i-2];
System.out.println(i + ":" + count[i]);
}
}
long end=System.currentTimeMillis();
System.out.println("运行时间:"+(end-start));
}
}

执行时间在42ms左右。

算法二:


public class ArithmeticTest1 {
public static void main(String[] args){
ArrayList<Integer> count1=new ArrayList<Integer>();
int i=0;
long start=System.currentTimeMillis();
for(i=1;i<=1000;i++) {
if (i == 1 || i == 2) {
System.out.println(i + ":" + 1);
count1.add(1);
}else{
count1.add(count1.get(i-2)+count.get(i-3));
System.out.println(i + ":" + count1.get(i-1));
}
}
long end=System.currentTimeMillis();
System.out.println("运行时间:"+(end-start));
}

执行时间约为44ms左右。

算法三:


public class ArithmeticTest1 {
public static void main(String[] args){
int i=0;
long start=System.currentTimeMillis();
math myMath = new math();
for(i=1;i<=1000;i++)
System.out.println(i + ":" + myMath.f(i));
long end=System.currentTimeMillis();
System.out.println("运行时间:"+(end-start));
}
static class math{
public int f(int x){
if(x==1||x==2)
return 1;
else
return f(x-1)+f(x-2);
}
}
}

执行时间n秒长。

时间: 2024-10-29 17:53:52

第一个算法的相关文章

周总结(2017.2.16):第一周算法学习。

周总结:算法学习总结之DFS和BFS 一:DFS算法 目的:达到被搜索结构的叶节点. 定义:假定给定图G的初态是所有的定点都没有访问过,在G中任选一定点V为初始出发点,首先访问出发点并标记,然后依次从V出发搜索V的每个相邻点W,若W未曾出现过,则对W进行深度优先遍历(DFS),知道所有和V有路径相通的定点被访问. 如果从V0开始寻找一条长度为4的路径的话: 思路步骤: 先寻找V0的所有相邻点:dis{v1,v2,v3},V1没有访问过,所以对V1进行深度遍历并将V1标记为访问过,此时路径长度为1

第一章 算法在计算机中的应用

第一章: 讲了算法(algorithm)的基本概念,以及算法的作用.(这些可以看书) 用个人的话来讲,你可以把算法当做一个解决问题的方法,就像数学里的各种公式一样,你也可以把他们认为是一种算法.算法无处不在,而且算法必须存在,否则我们的生活都将变得缓慢,迟钝. 举个例子:我们平时出去游玩时,要事先查好路线,这时就可以用百度地图搜索从A地到B地的路线,地图上会给出最快的乘车路线,这些路线是怎么给出来的,就是用了最短路的算法,关于最短路的算法有很多,比如Dijkstra, Bellman, Floy

任正非:向谷歌学习,杀出一条血路(谷歌军团的编制不大,战斗力极强。任何产品都是架构第一。算法团队直接杀入到项目中去,一线既有算法又有数据,就容易突破,抽象的平台一定要有实践东西检验。蓝军不一定是有学历的。我们帮助他们在工作中完成学历教育)

IT之家1月22日消息 日前,华为心声社区公布了任正非在1月9日在杭州研究所业务汇报会上的讲话.在本次讲话中,任正非表示在软件工程能力提升上,我们最缺乏的是对宏观架构有清醒认识的人才.建立公司是一个架构:建立公司的利益体系也是一个架构:任何产品都是架构第一:软件重构一定要从宏观架构入手. 任正非强调,没有谁在限制我们的科研,我们也不要自己约束了自己,要敢于到贴近人才资源的地方进行研究活动,在每个研究所形成自己的技术要素,对行业发展形成牵引.要多和终端.外研所交流. 最后任正非表示,谷歌军团的编制

我实现的第一个算法----归并排序

今天听了卜东坡老师的算法课,讲的是归并算法,那个动画演示,终于让我开窍了,于是乎,赶紧今天就编了个C++的程序.我知道可能这个程序还比较粗糙,但是这是第一次实现了算法导论上的东东,心里那个激动啊,,,哎,我也终于能实现个算法了,以前总认为自己很菜,其实真的很菜,,,算了,直接上程序吧,,, #include<iostream> using namespace std; int a[100]; int flag; int n; void vector_initial(); void print_

算法导论-第一章-算法在计算中的作用(速记)

算法就是把输入转换成输出的计算步骤的一个序列. 问题实例由计算该问题解所必需的(满足问题陈述中强加的各种约束的)输入组成. 若对每个输入实例,算法都以正确的输出停机,则称该算法是正确的. 许多有趣的算法问题所共有的两个特征: 1.存在许多候选解,但绝大多数候选解都没有解决手头的问题.寻找一个真正的解或一个做好的解可能是一个很大的挑战. 2.存在实际应用. 数据结构是一种存储和组织数据的方式,旨在便于访问和修改. 原文地址:https://www.cnblogs.com/lixiaov/p/104

第一个算法撞作座啄酌邹

http://www.ebay.com/cln/hzh_xndf/2015-01-29/166616677012 http://www.ebay.com/cln/7hz_tjpt/2015-01-29/166879064015 http://www.ebay.com/cln/xtv_zljp/2015-01-29/166504117017 http://www.ebay.com/cln/7hz_tjpt/2015-01-29/166879071015 http://www.ebay.com/cl

关于今天学习的第一个算法——k-近邻算法

Def classify0(inX,data_set,labels,k): Data_set_size=data_set.shape[0] //.shape[0]表示获取data_set有多少行,.shape[1]即获取列数 //另外注意shape后用中括号 Diff_mat=tile(inX,(data_size,1))-data_size //tile可以把一个数组进行扩展,上面的代码即把inX里的数组复制data_size个,反正不好表述,可以自行百度.使用这个就省得去用for循环了. S

《算法导论》读书笔记--第一章

第一章 算法在计算中的作用 一.什么是算法?为什么算法值得研究?相对于计算机中使用的其他技术来说算法的作用是什么? 算法就是任何良定义的计算过程,该过程取某个值或者值的集合作为输入并产生某个值或者值的集合作为输出.这样算法就是把输入转换成输出的计算步骤的一个序列. 若对每个输入实例算法都以正确的输出停机,则称该算法是正确的,并称正确的算法解决了给定的计算问题.注意:不正确的算法只要其错误率可控时可能是有用的,但是我们通常只关心正确的算法. 数据结构是一种存储和组织数据的方式,旨在便于访问和修改.

算法导论--第一部分(基础知识)

第一章  算法在计算中的作用 1.1 算法 算法是任何良定义的计算过程,该过程取某个值或值的集合作为输入并产生某个值或者值的集合作为输出. 对每个输入实例,算法都以正确的输出停机,则称该算法是正确的. 算法的运行时间: $\log{n} < \sqrt{n} < n < n\log{n} < n^2 < n^3 < 2^n < n!$