因为是第一篇数据结构与算法嘛,先简单介绍一下,想从基础开始了解数据结构与算法的小伙伴欢迎观看,我会持续更博客哦。近期都会发表数据结构相关内容。
先从一个简单的C语言入手,学C的小白肯定都写过这个代码,计算1+2+3+...+100的结果,绝大多数人会写出下面这个程序:
int i,sum=0,n=100;
for(i=1;i<=n;i++)
{
sum=sum+i;
}
printf("%d",sum);
这是最简单的计算机语言之一,当然这只是其中一种做法,你也可以这样做:int i,sum=0,n=100;
sum=(1+n)*n/2;
printf("%d",sum);
就是普普通通的等差数列,以上两种代码都是算法,因此,可以得出算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
算法具有五个基本特性:输入,输出,有穷性,确定性,可行性。
输入输出比较容易理解,在这里就不多说了,有穷性是指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。也就是说,当你的代码出现死循环是,你就违背了算法的有穷性。确定性是指算法的每一步都有确定的含义,就好像你做一件事之前要明确你做这件事的唯一意义,每一步都不会出现二义性。可行性也就是说,算法的每一步都能够通过执行有限次数完成,可以转换为程序上机运行,并得到正确的结果。
唔 今天发布的内容有些少 明天继续补充,给大家放一波Java代码吧。
小球自由落体 | |||||||
Description | |||||||
一个球从100m高度落下,每次落地后返回原高度一半,再落下。求它在第10次落地时共经过多少米?第10次返弹多高? | |||||||
Input | |||||||
无 | |||||||
Output | |||||||
第10次落地时共经过的距离和第10次返弹的高度。两个数据输出在一行,中间以空格分隔,保留两位小数。 #include<stdio.h> int main() { double sn=100,hn=sn/2; int n; for(n=2;n<=10;n++) { sn=sn+2*hn; hn=hn/2; } printf("%.2lf% .2lf\n",sn,hn); //system("pause"); return 0; }
#include<stdio.h> int main() { int day,x1,x2; day=9; x2=1; while(day>0) { x1=(x2+1)*2; x2=x1; day--; } printf("%d\n",x1); return 0; } |
字符串连接 |
Description |
编写一个程序,将字符数组w2中的全部字符连接到字符数组w1中,不得使用strcat函数。 |
Input |
有多组数据,每组数据由两个字符串组成,分别占一行。连接后最长的字符串不超过100个字符。 |
Output |
连接后的字符串。 |
#include<stdio.h>
#include<string.h>
intmain()
{
char s1[200],s2[100];
while(gets(s1))
{
char *p1=s1, *p2=s2;
gets(s2);
p1+=strlen(s1);
for(;*p2!='\0';)
*p1++=*p2++;
*p1='\0';
printf("%s\n",s1);
}
}