java数据结构和算法

来源:互联网 发布:哪个看书软件全部免费 编辑:程序博客网 时间:2024/06/03 19:39

1. 数据结构是对在计算机内存(硬盘)中的数据的一种安排.

2. 数据结构包括数组,链表,栈,二叉树,哈希等.

3. 数据结构的特性:

数组 (优点:插入快,如果知道下标,可以非常快的存储.缺点:查找慢,删除慢,大小固定)

有序数组 (优点:比无序数组查找快.缺点:查找慢,删除慢,大小固定)

栈 (优点:提供后进先出的存取.缺点:存取其他项很慢)

队列 (优点:提供先进先出方式的存取.缺点:存取其他项很慢)

链表 (优点:插入快,删除快.缺点查找慢)

二叉树 (优点:查找,插入,删除都快(如果数保持平衡), 缺点:删除算法复杂)

红-黑数 (优点: 查找,插入,删除都快.数总是平衡的. 缺点:算法复杂)

2-3-4树 (优点: 查找,插入,删除都快.数总是平衡的,类似的数对硬盘存储有用. 缺点:算法复杂)

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

堆 (优点: 插入,删除快,对最大数据项的存取很快, 缺点:对其他数据项存取慢)

图 (优点: 对现实世界建模, 缺点: 有些算法慢且复杂)

4. 数据结构出来数组之外都被认为是抽象数据结构(ADT)


数组:

1.设数据有N个,则一个数据项的的平均查找的长度为N/2. 在最坏的情况下,待查的数据项在数组的最后,则需要N步才能找到.

2.删除算法中暗含一个假设,即数组中不能有洞(空单元).如果有洞,算法会要判断非空数据而变得效率低.切记不能有空单元.

3. 删除(假设数据不重复)查找平均N/2个数据项并移动剩下的N/2个数据项来填充删除而带来的洞.总共是N步.

4. 如果允许重复,则通常查找步数是N个,即全部查找. 也可以在第一次匹配成功后就停止查找.

5. 允许重复下的删除需要检查N个数据项和(可能)移动多于N/2个数据项.

6. 不管是否可以重复,插入数据只需一步.




原创粉丝点击