向量

向量

ADT(Aabstract data type)
  抽象数据类型,数据模型+定义在该模型上的一组操作

DS(Data Structure)
  数据结构, 基于某种特定语言,实现ADT的一整套算法

  c/c++语言中,数组A[]中的元素与[0,n)内的编号一一对应。每个元素均可以有编号唯一指代,并可以直接访问,也称之为线性数组。
  向量是数组的抽象与泛化,由一组元素按线性次序封装而成.

  1. 各元素与[0,n)内的秩一一对应 (循秩访问)
  2. 元素的类型不局限于基本类型
  3. 操作、管理更加简化、统一与安全
  4. 可更为便捷的参与复杂的数据类型的定制与实 现

向量ADT接口

操作 功能 适用对象
size() 报告向量当前的规模(向量长度) 向量
Get(r) 获取秩为r的元素 向量
put(r,e) 用e替换秩为r元素的数值 向量
insert(r,e) e作为秩为r元素插入,原后继元素依次后移 向量
Remove(r) 删除秩为r的元素,返回该元素中原本存放的对象 向量
disordered() 判断所有元素是否已按非降序排列 向量
sort() 调整各元素位置,使之按非降序排列 向量
find(e) 查找目标元素e 向量
search(e) 查找目标元素e,返回不大于e且秩最大的元素 有序向量
deduplicate() 剔除重复元素 向量
Uniquify 剔除重复元素 有序向量
traverse() 遍历向量并统一处理所有元素,处理方法由函数对象制定 向量

递增式扩容

最坏情况:在初始容量为0的空向量中,连续插入n=m*I >> 2个元素…
在1,I+1,2I+1..都需要扩容

装填因子:100%

加倍式扩容

最坏情况: 在初始容量为1的空向量中,连续插入$n=2^m >> 2$个元素
在1,2,4,8…都需要扩容

装填因子:50%