数据结构与算法(1)

来源:互联网 发布:js 字符串base64编码 编辑:程序博客网 时间:2024/05/21 14:07

因为是第一篇数据结构与算法嘛,先简单介绍一下,想从基础开始了解数据结构与算法的小伙伴欢迎观看,我会持续更博客哦。近期都会发表数据结构相关内容害羞。   

先从一个简单的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"stdlib.h"

#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;

}

 

.猴子吃桃问题

Description

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩下的桃子吃了一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天想吃时,见只剩下一个桃子了。求第1天共摘了多少个桃子? 

Input

Output

第一天摘的桃子数

#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);

   }

}