《Java数据结构与算法》每周一记(1)

想扎实地总结一本数据结构方面的书,每周一篇,尽可能按章节完成,每周一章。


综述

Today.序言
Day 1  数组
Day 2 简单排序(冒泡、选择、插入)
Day 3 栈和队列
Day 4 链表
Day 5 递归
Day 6 高级排序(希尔排序与快速排序)
Day 7 二叉树
Day 8 红-黑树
Day 9 2-3-4树和外部存储
Day 10 哈希表
Day 11 堆
Day 12 图
Day 13 各种数据结构的应用场合

数据结构:数据在计算机内存空间中或磁盘中的组织形式
算法:完成特定任务的过程

 数据结构和算法能起到什么用?


1.现实世界数据存储
  例如:一条人事档案记录描述了一位真实人的信息  ,一条存货记录描述了一个真实存在的汽车部件或杂货店里的一种商品,一条财务交易记录描述了一笔支付电费实际填写的支票。假设当前有一叠3*5的索引卡片,这些卡片可以被用在不同的场合。如果每场卡片上写有某人的姓名、地址和电话号码,那么折叠卡片一定是地址簿。如果写有家庭所有物的名称、位置和价值,那可能是一本财产清单。当然索引清单的所有处理事务都可以由计算机来承担,如果不是这样以下问题可能会带来困扰:
  • 如何在计算机内存中安放数据?
  • 所有方法适用于100张卡片吗?1000张呢?10000张呢?
  • 所有方法能够快速地插入和删除卡片吗?
  • 能快速地找到一张特定的卡片吗?
  • 若想将卡片按照字母或拼音排序如何实现呢?
  实际上,生活中的大多数程序比索引卡片要复杂的多但仍然需要面对以上这些基础性,共有的问题。比如车辆管理局的数据库,车牌号对应车辆及车架号等信息。比如航班预定系统,存储了旅客与航班的各种信息,这些均由数据结构组成。设计这些复杂系统也需要运用到软件工程的知识。

2.程序员的工具
   程序员经常将栈和队列以及优先级队列等结构当做工具来简化一些操作

3.建模
   有些数据结构能够对真实世界的情况建造模型,最重要的数据结构就是图。图可以用来表示城市之间的航线,线路之间的链接,工程中的任务安排关系。我们玩的游戏当中角色的运动轨迹,打斗。都需要用到图。其他诸如栈和队列等数据机构也会用在事件模拟中。例如一个队列可以模拟顾客在银行当中排队等待的模型,还可以模拟汽车在收费站前等待交费的模型。



数据机构优缺点总结

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



正确选择数据结构会使程序的效率大大提高, 在Java中,算法经常通过类的方法实现。
明天,第一部分,数组。











你可能感兴趣的:(数据结构)