无序向量
向量ADT
向量 ADT 操作实例
无序向量
- 无序向量
没有顺序
无法排成顺序
无序向量 – 元素访问
- 元素访问
get ( r )
功能:获取秩为 r 的元素
put( r, e )
功能:用 e 替换秩为 r 的元素的数值
无序向量 – 插入
- 插入
insert( r, e )
功能:e 作为秩为 r 的元素插入,原位置及之后位置元素后移
思考:元素后移的方向
回顾 - 可扩充向量
- 扩容算法
无序向量 – 区间删除
- 区间删除
remove( lo, hi )
删除秩的范围在 [ lo, hi ) 的数据
向量 – 缩容
- 缩容
shrink()
- 压缩界限讨论
无序向量 – 单元素删除
- 单元素删除
remove( r )
功能:删除秩为 r 的元素,并返回该元素原值
向量-查找
- 查找操作
目标:按照特定的条件从向量中查找到特定元素
- 操作要求
无序向量
元素可以判等
有序向量
元素可比较大小
无序向量:判等器
有序向量:比较器
无序向量 – 区间查找
- 区间查找
find( e , lo, hi )
功能:在区间 [lo, hi) 上查找目标元素 e [,在命中多个元素时返回秩最大者]
无序向量 – 去重
- 去重
deduplicate()
功能:删除重复元素 [ ,返回元素删除总数 ]
- 正确性
- 复杂度
思考
有序向量唯一化的高效版本如何实现?