数据结构学习手册——IntSet 整数集合

13.3 IntSet 整数集合

13.3.1 ADT(C#)

  1. 用接口封装类,相当于只开放类的部分功能

    eg:

    public interface ISet_my<T>
        {
            uint[] GetCoordinate(T element);
            uint[] Add(T element);  //加入元素element,返回offset
            uint[] Remove(T element);
            //bool IsMember(T element);
            string GetBinString();  //get 二进制流,其实还是string流而不是bitString
            string PrintBinString();  //返回BinString
            string GetIntString();  //返回intString
            string PrintIntString();  
            ISet_my<T> Union(ISet_my<T> ISet_2);  //并集
            ISet_my<T> Intersect(ISet_my<T> ISet_2);  //交集
            ISet_my<T> DiffSet(ISet_my<T> ISet_2);  //差集
            ISet_my<T> Complement();  //补集
        }
    

13.3.2 核心思想

​ IntSet (整数集合) 的核心思想就是压缩集合存储更多数据,比如:

用一个int32空间 存32个int

比起用32个int32空间 存32个int,IntSet的开销瞬间就小了是不是!

13.3.2 实现原理

  1. bitMap(位图) 和 GetCoordinate()

    在这里插入图片描述

public class IntSet_my : ISet_my <uint>  
    {
    //member
        private readonly uint[] _bitMap;  //_bitMap的比特流表示IntSet存储信息
        public uint _bitSize { get; }  //_bitMap的比特流占多少位二进制
     //contributor
        public IntSet_my(uint bitSize_0)
        {
            _bitSize = bitSize_0;
            _bitMap = new uint[_bitSize / 32 + 1];  //at lease 1 int32 to store IntSet
            for (in
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值