Java数据结构和算法概述

数据结构是对在计算机内在中的数据的一种安排。数据结构包括数组、链表、栈、二叉树、哈希表等等。算法对这些结构中的数据进行各种处理。

上述知识可以用于下面三类情况:现实世界数据存储;程序的工具;建模。

 

现实世界数据存储

在这里讨论的许多数据结构和技术与如何处理现实世界数据存储问题紧密相连。现实世界数据指的是那些描述处于计算机外部的物理实体的数据。看几个例子:一条人事档案记录描述了一位真实人的信息,一条存货记录描述了一个真实存在的汽车部件或杂货店里的一种商品,一条财务交易记录描述了一笔支付电费实际填写的支票。

 

程序员的工具

并不是所有的存储结构都用来存储现实世界的数据。通常情况下,现实世界的数据或多或少会由程序的用户直接存取。但是有些数据存储结构并不打算让用户接触,它们仅被程序本身所使用。程序员经常将诸如栈、队列和优先级队列等结构当作工具来简化另一些操作。

 

现实世界的建模

有些数据结构能直接对真实世界的情况构造模型。其中最重要的数据结构是图。图可以用来表示城市之间的航线,电路中的连接,或是某一工程中的任务安排关系。其他诸如栈和队列等数据结构也会应用在事件模拟中。例如,一个队列可以模拟顾客在银行中排除等待的模型,还可以模拟汽车在收费站前等待交费的模型。

 

数据结构的概述

数据结构      优点                                                                                              缺点

数组               插入快,如果知道下标,可以非常快地存取                    查找慢,删除慢,大小固定

有序数组      比无序的数组查找快                                                               删除和插入慢,大小固定

                   提供后进先出方式的存取                                                       存取其他项很慢

队列               提供先进先出方式的存取                                                       存取其他项很慢

链表               插入快、删除快                                                                        查找慢

二叉权          查找、插入、删除都快(如果树保持平衡)                    删除算法复杂

红-黑树      查找、插入、删除都快。权总是平衡的                             算法复杂

2-3-4         查找、插入、删除都快。树总是平衡的。类似的树对磁盘存储有用          算法复杂

哈希表          如果关键字已知则存取极快。插入快                                 删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分

                   插入、删除快,对最大数据项的存取很快                        对其他数据项存取慢

                   对现实世界建模                                                                        有些算法慢且复杂

 

算法的概述

计算将要讨论到的算法直接适用于某些特殊的数据结构。对于大多数数据结构来说,都需要知道如何:插入一条新的数据项;寻找某一特定的数据项;删除某一特定的数据项。还需要知道如何迭代地访问某一数据结构中的各数据项,以便进行显示或其他操作。

另一种重要的算法范畴是排序,排序有许多种算法;递归的概念在设计某些算法时十分重要。递归意味着一个方法调用它自身。

 

一些定义

数据库:表示在某一特定情况下所有要查阅的数据,数据库中的第一条数据都被认为是同样格式的。

记录:指数据库中划分成的单元。它们为存储信息提供了一个结构格式。在索引卡片的模拟系统中,每一张卡片就代表一条记录。当有许多类似的实体时,一条记录包含了某一个实体的所有信息。

字段:一条记录经常被划分为几个字段。一个字段保存某一种特定的数据。更复杂的数据库程序使用带有更多字段的记录。一条记录,其中每一行代表了一个不同的字段。在Java语言中,记录经常被表示为一个相应类的对象。一个实例中各个变量表示不同的数据字段。在Java语言中一个类对象的字段被称为字段。

关键字:在数据库中查找一条记录,需要指定记录的某一个字段为关键字。通过这个特定的关键字来进行查找。当找到具有该关键字的记录时,便可以访问它的所有字段,而不仅仅是关键字了,可以说是关键字释放了整个记录。

 

过程性语言的问题

过程性语言有两类问题:一是程序与现实世界缺乏对应关系,二是程序内部的结构出现了问题。

 

小结

数据结构是指数据在计算机内存空间中或磁盘中的组织形式。

正确选择数据结构会使程序的效率大大提高。

数据结构的例子有数组、栈和链表。

算法是完成特定任务的过程。

Java中,算法经常通过类的方法实现。

一些数据结构的用途是作为程序员的工具:它们帮助执行算法。

其他数据结构可以模拟现实世界中的情况。

数据库是指由许多类似的记录组成的数据存储的集合。

一条记录经常表示现实世界中的一个事物。

一条记录被分成字段。每个字段都存储了由这个记录所描述事物的一条特性。

一个关键字是一条记录中的一个字段,通过它可以对数据执行许多操作。

可以搜索数据库以便找到关键字字段有定值的所有记录,这个值被称为查找关键字。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值