有这样一组格式的数 10-20, 50-80, 15-30, 90-150..第一组表示从10到20的数,第二组表示从50到80的数,依次类推...
问题一:如何判断这些数据集没有交集问题二:判断给定的一个数字在哪一个集合中,最快的算法是什么?

解决方案 »

  1.   

    问题一:个人看法,没有交集的数据段
    首先获得基础值为第一组数据A 10-20,和第二组B比较,需要符合条件
    就是MinA不能大于MaxB And MaxA不能小于MinB如果不符合——跳出,符合,调整基础值为两组数据中间临近的两个值——也就是交集
    继续比较下一组。这是通俗性方法,称不上什么算法。==================================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    本人说明:<我的帖子我做主,结贴率保持100%>
    优惠接单开发,信誉保证,Q64180940(请清楚注明业务还是技术咨询) 
    ==================================================================
      

  2.   

    问题二:判断给定的一个数字在哪一个集合中,最快的算法是什么?加入多集合都包含的话,你能怎么做?——只能逐个判断阿==================================================================
    博客空间:http://blog.csdn.net/lovingkiss
    资源下载:http://download.csdn.net/user/lovingkiss
    Email:loving-kiss@163.com
    本人说明:<我的帖子我做主,结贴率保持100%>
    优惠接单开发,信誉保证,Q64180940(请清楚注明业务还是技术咨询) 
    ==================================================================
      

  3.   

    所有组通过比较第一个数大小排序,得到aA bB cC这样的序列。然后逐个比较A和b,B和c……如果小于说明没有交集。
    判断给定的一个数字在哪一个集合中,在排好序的数组里二分查找就可以了。如果一定要最快,建hash表,范围不大可以用。
      

  4.   

    2 要追求效率 感觉hashtable应该比较快
      例如 ht1的key从10~20 
           现在判断16
           if(ht1.Contains(16))
           {
              //in
           }
           else //不包含 not in
      

  5.   

    有可能是浮点数,hash表做不了