"HashSet" (数据结构)

"HashSet"

表示一个集合,其中的成员为普通表达式,成员资格则是用哈希函数计算的.

更多信息

  • 哈希集合可用于高效插入和删除以及成员测试:
  • CreateDataStructure["HashSet"]创建新的空 "HashSet"
    CreateDataStructure["HashSet",elems]创建一个包含 elems 的新 "HashSet"
    Typed[x,"HashSet"]指定 x 的类型为 "HashSet"
  • 对于类型为 "HashSet" 的数据结构,可进行以下操作:
  • ds["Complement",list]ds 中删除出现在 list 中的元素用时:O(n)
    ds["Copy"]返回 ds 的副本用时:O(n)
    ds["Elements"]返回 ds 中的参数列表用时:O(n)
    ds["EmptyQ"]如果 ds 中没有元素则返回 True用时:O(1)
    ds["Delete",x]ds 中删除 x,如果 x 是元素,返回 True 用时:O(1)
    ds["DeleteAll"]删除 ds 的所有元素用时:O(n)
    ds["Insert",x]x 添加到集合中,如果添加成功则返回 True用时:O(1)
    ds["Intersection",list]ds 中删除没有出现在 list 中的元素用时: O(n)
    ds["Length"]返回存储在 ds 中的元素的数量用时: O(1)
    ds["MemberQ",x]如果 xds 的元素则返回 True用时: O(1)
    ds["Pop"]ds 删除一个参数并复原用时: O(1)
    ds["SubsetQ",ds1]如果哈希集合 ds1ds 的子集,则返回 True 用时: O(n)
    ds["Union",list]list 中出现的元素添加到 ds用时: O(n)
    ds["Visualization"]返回 ds 的可视化用时: O(n)
  • 还支持以下函数:
  • dsi===dsj如果 dsi 等于 dsj 则为 True
    FullForm[ds]ds 的完全形式
    Information[ds]关于 ds 的信息
    InputForm[ds]ds 的输入形式
    Normal[ds]ds 转换成普通表达式

范例

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

基本范例  (2)

可用 CreateDataStructure 创建新的 "HashSet"

插入集合中:

集合中有一个元素:

测试是否存储的是表达式:

如果存储的不是表达式,则返回 False

从集合中删除元素. 如果确实删除了某些元素,则返回 True

返回表达式形式的 ds

快速插入元素:

可视化数据结构:

范围  (2)

信息  (1)

可用 CreateDataStructure 创建新的 "HashSet"

数据结构 ds 的信息:

集合运算  (1)

"HashSet" 支持一些核心集合运算. 可用 CreateDataStructure 创建新的空 "HashSet".

将元素插入到 ds 中:

"Union" 运算将原先不在数据结构中的元素添加到数据结构中:

"Complement" 运算将元素从数据结构中删除:

"Intersection" 运算将共有元素保留在数据结构中:

应用  (1)

多组字符串  (1)

内置集合运算非常适合处理机器数组成的矩形数组. 数据结构运算非常适合处理多组诸如字符串之类的非数字数据. 创建 1000000 个由字符串组成的列表:

类似的例子则显示出 "Complement" 的优势:

巧妙范例  (1)

计算 GCD  (1)

找到两个因子集合的交集有助于找到最大的公因子:

最大值为 3:

该结果即为 GCD: