"SortedMultiset" (数据结构)

"SortedMultiset"

表示一个多重集,其中成员都为通式并按顺序排序.

更多信息

  • 有序的多重集在有效插入和移除及在相同元素是否可以多次出现的成员检测中都发挥着重要作用:
  • CreateDataStructure["SortedMultiset"]创建一个使用规范排序的空白新 "SortedMultiset"
    CreateDataStructure["SortedMultiset",elems]使用元素 elems 创建新 "SortedMultiset"
    CreateDataStructure["SortedMultiset",elems,p]使用指定元素和排序函数 p 创建新 "SortedMultiset"
    Typed[x,"SortedMultiset"]将类型 "SortedMultiset" 赋予 x
  • 对于类型 "SortedMultiset" 的数据结构,可使用下列运算:
  • ds["Cases",elem]返回匹配 elem 的多重集的成员用时:O(log n)
    ds["Count", elem]返回匹配 elem 的元素数量用时:O(log n)
    ds["Delete",x]ds 中删除 x 一次;如果 x 是元素,返回 True 用时:O(log n)
    ds["DeleteAll"]删除 ds 的所有元素用时:O(n)
    ds["DeleteCases",x]ds 中删除所有的 x;如果 x 是元素,返回 True 用时:O(log n)
    ds["Elements"]返回 ds 的元素列表用时:O(n)
    ds["EmptyQ"]ds 没有成员,则为 True用时:O(1)
    ds["Insert",x]x 插入进多重集用时:O(log n)
    ds["Length"]返回 ds 中存储的成员数量用时:O(1)
    ds["MemberQ",x]xds 的成员,则为 True用时:O(log n)
    ds["Visualization"]返回 ds 的可视化表达用时:O(n)
  • 也支持下列函数:
  • dsi===dsjdsi 等于 dsj,则为 True
    FullForm[ds]ds 的完整格式
    Information[ds]ds 的信息
    InputForm[ds]ds 的输入格式
    Normal[ds]ds 转换为普通表达式

范例

打开所有单元关闭所有单元

基本范例  (3)

可使用 CreateDataStructure 创建新的 "HashSet"

插入集合:

集合中有一个元素:

检验是否有表达式被存储:

若没有表达式被存储,则返回 False

从集合中移除元素. 若确实移除了内容,则返回 True

现在集合中有两个元素:

返回 ds 的表达式版本:

插入若干元素:

可以生成数据结构的可视化表达:

这展示了数据是如何排序并包含多个元素的.

可以为有序多重集给出排序函数:

插入两个元素:

根据排序函数,这些元素都相等:

移除一个元素:

范围  (1)

信息  (1)

可使用 CreateDataStructure 创建新的 "SortedMultiset"

关于数据结构 ds 的信息:

可能存在的问题  (1)

集合成员  (1)

若给定了排序函数,则可用于指定集合成员:

由于排序函数只看第一个元素,返回的结果会是 True