无序向量

向量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()

功能:删除重复元素 [ ,返回元素删除总数 ]

 

 

 

  • 正确性

 

 

 

  • 复杂度

 

 思考

有序向量唯一化的高效版本如何实现?

 

posted on 2020-10-22 13:54  switch大咖  阅读(188)  评论(0编辑  收藏  举报