一、什么是数据结构?什么是算法?
数据在计算机的内存或者磁盘上的存储情况,也是对数据的逻辑结构和物理结构研究。算法则是指对数据的各种处理方法。例如:增加数据、删除数据、修改数据、查找数据(即CRUD)、和对数据进行排序等。总之,学好数据结构对一个程序员来说非常重要,学好这个课程有利于我们对现实世界中数据的存储,起到建模的作用,是程序员的重要工具。
二、数据结构的概述
常见的数据结构有:数组、有序数组、栈、队列、链表、二叉树、红-黑树、2-3-4树、哈希表、堆、图等。下面我们用表格列出它们的优缺点。
数据结构 | 优点 | 缺点 |
数组 | 插入快,如果知道下标可快速存取 | 查找慢,删除慢,大小固定 |
有序数组 | 比无序数组查找快 | 插入、删除慢,大小固定 |
栈 | 提供后入先出的存取方式 | 存取其他项很慢 |
队列 | 提供先进先出的存取方式 | 存取其他项很慢 |
链表 | 查找、删除快 | 查找慢 |
二叉树 | 查找、插入、删除都很快(如果树保持平衡) | 删除算法复杂 |
红黑树 | 查找、插入、删除都快,树也总是平衡的 | 算法复杂 |
2-3-4树 | 查找、插入、删除都快,树也总是平衡的,类似的树对磁盘存储有用 | 算法复杂 |
哈希表 | 如果知道关键字则存取很快,插入快 | 删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分 |
堆 | 插入、删除快,对最大数据项存取很快 | 对普通数据项存取慢 |
图 | 对现实世界建模 | 部分算法慢且复杂 |
三、算法的概述
程序=数据结构+算法,算法的文本意思是对模型分析的一组可行的,确定的,有穷的规则,它有五个特征:有穷性、确定性、可行性、输入、输出。
四、名词定义
数据库(database)
数据库是按照数据结构来组织、存储和管理数据的仓库。例如一个存放着所有学生的各项信息数据的数据集就可以称为一个数据库。
记录(record)
记录是指数据库中划分成的单元,例如某一个学生在数据库中所有的信息就可以称为一条记录,在java中一个记录被称为一个相应类的对象,例如一个学生就可以称为一个对象。
字段(field)
一条记录可由多个字段组成,例如一个学生的数学成绩可以称为一个字段,在java中字段又被称为变量或者成员。
关键字(keyword)
在数据库中查找一条记录,需要指定某一个字段作为唯一的标识来区别每条记录,这个被指定被用来做唯一标识的字段就是关键字。例如学生的学号。
五、基本数据类型
名称 | 大小(按位计) | 取值范围 |
boolean | 1 | true或false |
byte | 8 | -128 ~ +127 |
char | 16 | ‘\u0000’ ~ ‘uFFFF’ |
short | 16 | -32768 ~ +32767 |
int | 32 | -2147483648 ~ +2147483647 |
long | 64 | -9223372036854775808 ~ +9223372036854775807 |
float | 32 | 约10-38 ~ 10+38;7位有效数字 |
double | 64 | 约10-308 ~ 10+308;15位有效数字 |