目录
一、数据结构的概述
1、什么是数据结构
概念:数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。
简单:数据结构就是数据和数据之间的关系。数据在计算机里面管理,它们之间有什么关系呢。
2、数据的存储结构
(1)、顺序存储结构
概念:是把数据元素存放在地址连续的存储单元里,其数据之间的逻辑关系和物理关系是一致的。典型代表:数组。
第一个数据存在第0个位置,然后第123....存储。
(2)、链式存储结构
概念:指在逻辑上相邻的元素,在物理存储位置上是不相邻的。链式存储通过名字来看,它有一个链接的含义,它在具体的实现上也是利用这样一个具体操作的。简单来说,就是数据给它一个号码,通过号码可以找到数据,像我们在食堂打饭吃,人不用排队,但是每个人都领一个号,叫到号去领饭,而且可以插队,比如你是食堂大妈的好朋友,大妈给你一个VIP,就能插队先买饭了。
(3)、两种方式的区别
顺序存储:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系;
链式存储:借助指示元素存储地址的指针表示数据元素之间的逻辑关系。
3、数据的逻辑结构
(1)、集合结构
概念:集合结构中的数据元素同属于一个集合,他们之间是并列的关系,除此之外没有其他的关系。
这个图表示的就是一个集合,圆圈外面和它没关系。
(2)、线性结构
概念:线性结构中的元素存在一对一的相互关系。
一个学生对应一个学号,这就是一对一的关系,也就是线性结构。
(3)、树形结构
概念:数据结构中的元素存在一对多的相互关系。
一个父亲会有多个孩子,也就是有一个根节点,然后每个节点会有一个子节点。
(4)、图形结构
概念:数据结构中的元素存在多对多的相互关系。
二、算法的概述
1、算法的定义
概念:是指解题方案的准确为完整的描述,是一系列解决问题的清晰指令,算法代表用系统的方法描述解决问题的策略机制。
简单:算法就是用来解决问题的思路,比如学数据解题的方法就属于算法
2、算法的特性
(1)、输入
每一个算法需要有0到多个输入。
(2)、输出
每一个算法至少要有一个输出。
(3)、有穷性
算法在有限的步骤,有限的执行时间里面能算出结果。
(4)、确定性
一个输入对应一个输出,结果要确定。
(5)、可行性
算法是否能解决实际问题。
3、算法的基本要求
(1)、正确性
也就是我们写的算法要执行正确的结果。
(2)、可读性
我们写的算法别的程序员也能看的懂。
(3)、健壮性
我们写的算法有错误的时候也要给用户一些提示。
(4)、时间复杂度
算法要占用的时间。
(5)、空间复杂度
算法要占用的内存。它与时间复杂度是相对的。
下面的程序就是两种算法,第一种就是从1开始一个一个加,第二个就是小学学的公式。
package demo1
public class AddOneToHandred{
public static void main(String[] args){
int total=0;
int end=100;
//使用for循环计算
for(int i=1;i<=end;i++){
total+=i;
}
//直接计算
// total=(1+end)*end/2;
//打印结果
System.out.println(total);
}
}
算法没有最好的,只有最合适的。