之前在学校就已经学习过数据结构,但那时都是用C语言来描述的,现在本着复习的目的,结合平时收藏的笔记,重新用Java来描述一下!一起学习,一起进步!(不是大牛,如有错误,还请指正!)
一、什么是算法?
算法:Algorithm,是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或者多个操作。
二、算法的特性
1、有穷性:指令序列是有限的
2、确定性:每条语句的含义明确,无二义性
3、可行性:每条语句都应在有限的时间内完成
4、输入:零个或者多个输入
5、输出:一个或者多个输出
三、算法与程序的区别
程序:(program)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的适合计算机执行的指令(语句)序列。
程序四要素:数据结构、算法、程序设计方法、编程语言
区别:
程序与算法不同。程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的有穷性,比如操作系统也是一种程序,
如果你愿意,你的电脑可以一直开着,保持操作系统的运行。如:
while(true){
}//是一段程序,但不是一个算法
四、程序、算法、软件之间的关系
程序:算法的计算机实现。用某种编程语言实现。
算法:表示问题的解。
软件:程序+文档
五、数据类型
数据类型:是指一个值的集合和定义在集合上的操作集合。例如:java的整数类型(Integer),就不仅仅表示整数数值的集合,还包括
对整数类型进行的操作集合,加、减、乘、除、取模等运算!我们通常所指的数据类型是某种高级语言支持的基本数据类型。如
Java中的基本类型:int、double、float、char等等。
抽象数据类型:一个数学模型以及定义在这个模型上的一组操作。
看起来抽象数据类型和数据类型的定义基本相同。不同点在于:数据类型通常是指某种高级语言的,而抽象数据类型用户重新
设计,一种概念。这里的"抽象"的含义在于数学抽象。
可大致分为这几类:
1、原子类型:比如整型
2、固定聚合类型:比如复数,两个实数确定的次序构成
3、可变聚合类型:比如汽车类型,构成的成分是不确定的。(因为小轿车、大卡车的构成是不同的)
抽象数据类型抽象的层次越高,那么可复用性也越高。比如:java中的Object是对所有对象的抽象,那么就可以作为所有类的
父类。举个栗子:用Java语言定义学生抽象数据类型
public class Students {
//学生的id
private int id;
//学生的姓名
private String name;
//学生的性别
private char sex;
//学生的联系方式
private String phone;
//学生的地址
private String address;
//无参的构造方法
public Students() {};
//五个参数的构造方法
public Students(int id,String name,char sex,String phone,String address) {
this.id=id;
this.name=name;
this.sex=sex;
this.phone=phone;
this.address=address;
}
//打印学生信息
void printStudentsInfo() {
System.out.println(id);
System.out.println(name);
System.out.println(sex);
System.out.println(phone);
System.out.println(address);
}
public static void main(String[] args) {
Students stu=new Students(1,"张三",'男',"18267572266","陕西省西安市.....");
stu.printStudentsInfo();
}
public String toString() {
return this.id+" "+this.name+" "+this.sex+this.phone+" "+this.address;
}
}