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. 不管是否可以重复,插入数据只需一步.