数据结构与算法1——综述

1 数据结构和算法起到的作用                                        

  数据结构是对计算机内存中(有时在磁盘中)的数据的一种安排。数据结构是存放数据物理结构在逻辑上的形式体现,常见的数据结构有数组、链表、栈、二叉树、哈希表等等。算法对这些结构中的数据进行各种处理,例如,查找一条特殊的数据项或对数据进行排序。数据结构和处理技术(即算法)可以解决如下问题

1.1 现实世界数据的存储       

  现实世界中有很多信息,有些信息是强相关的,比如一个人的身高、体重、年龄等等,这些信息不是随便放的,就像你不会把厨房里的锅放在卧室里面,铲子放到卫生间里面,我们需要一个统一地方存放这些信息,在物理上就是放在存储空间里面,比如硬盘或内存,在逻辑形式上就是上面提到的各种数据结构,比如数组、链表等等。

1.2 现实世界的建模            

  一些数据具有很强的实用性,就是与相应的事件对应起来,比如队列可以模拟顾客在银行中排队等待。

2 数据结构的概述                                                    

  数据结构与算法就是讨论这些数据结构的实现以及在数据结构上进行一些操作。
  下面列出了一些数据结构的描述
数据结构    优点                            缺点
数组      插入块,如果知道下标,可以非常快地存取           查找慢,删除慢,大小固定
有序数组      比无序的数组查找快                      删除和插入慢,大小固定
栈         提供后进先出方式的存取                    存取其他项很慢
队列        提供先进先出方式的存取                    存取其他项很慢
链表        插入快,删除快                        查找慢
二叉树       查找、插入、删除都快(如果树保持平衡)             删除算法复杂
红-黑树     查找、插入、删除都快,树总是平衡的              算法复杂
2-3-4树      查找、插入、删除都快,树总是平衡的,树对磁盘存储有用     算法复杂
哈希表       如果关键字已知则存取极快,插入块              删除慢,如果不知道关键字则存取很慢,对存储空间使用不充分
堆         插入、删除快,对最大数据项的存取很快              对其他数据项存取慢
图        对现实世界建模 有些算法慢且复杂

  数据结构除了数组之外都可以被认为是抽象数据结构(ADT),主要是数据的存储物理结构与逻辑结构并非拓扑结构上一致。

3 算法概述                       

  许多将要讨论到的算法直接适用于某些特殊的数据结构,对大多数数据结构来说,都需要实现以下功能
1.插入一条新的数据项
2.查找某一特定的数据项
3.删除某一特定的数据项
4.给数据结构里的数据排序
5.其他

4 过程性语言的问题                    

  面向对象编程语言的产生是由于发现过程性语言在处理大小的复杂问题时有些力不从心。具体是哪些问题呢?
有两类问题:一是程序与现实世界缺乏对应关系,二是程序内部的结果出现了问题。
对现实世界建模的无能为力
  使用过程语言对现实世界问题进行抽象即概念化十分困难:方法执行任务,而数据存储信息,但是现实世界中的事物是对二者同时进行操作。
粗糙的组织结构
  解决程序的内部组织结构是一个更微妙而且事关重大的问题。面向过程的程序被划分为一个个方法,这种基于方法组织形式的一个巨大问题是它仅仅考虑了方法,而没有重视数据。当不得不面对数据时,它没有太多的选择。简而言之,数据可以是一个特定的方法的局部量,也可以是所有方法都可以存钱的全局量,就是无法规定一个变量只允许某些方法存取而不允许另一些方法存取。

5 Java数据结构的类库                                              

  Java.util包中含有诸如向量(一个可扩充的数组)、栈、库和哈希表等类型的数据结构。这些数据结构已经被实现并提供了相关操作方法。但是我们仍然需要学习别的数据结构,提供的数据结构是不够的。

原文地址:https://www.cnblogs.com/people/p/3120362.html