我用java写了一个Server,下面有很多个客户端,想从所有客户端中的数据中找出,最大的100个数,请问这个要怎么设计比较好,我想到的只有把数据全部传上去,然后再找,可是这样很占资源,如果每次只传上去每个客户端中最大的几个,那具体要怎么做???,请问这个问题有没有什么已经设计好的算法,可以借鉴一下,先谢谢大家了O(∩_∩)O~

解决方案 »

  1.   

    貌似没有什么好的方案啊
    服务器这边只有监听的能力
    与客户端连接后,可保持连接
    每个客户端之间都要通过服务器来联系
    它们无法知道彼此的情况
    这样一来,是怎么都要和服务器通信的
    占资源是避免不了的
    既然不能避免,就想想如何节省资源吧
    非阻塞的nio是一个解决多客户端的方案
      

  2.   

    想从所有客户端中的数据中找出,最大的100个数,呵呵,是不是可以理解每个客户端先对自己的数据排序,把前100个数传给server,然后server再进行比较排序
      

  3.   

    1. 每个客户端把前100个数的最大值和最小值传给server
      server比较
      最大值比其它机子最小值还小的,直接舍弃该client
    2. 将比较出来的最大的最小值MIN回传给剩余的各个client
      client将比MIN大的数据(肯定小于等于100),传给server
      server对这些数据进行比较,取前100个
    PS:你的client很多么?即使100个client,每个client传100个数比较,也才10000个而已,应该很快的吧
      

  4.   

    1. 每个客户端把前100个数的最大值和最小值传给server 
      server比较 
      最大值比其它机子最小值还小的,直接舍弃该client 
    2. 将比较出来的最大的最小值MIN回传给剩余的各个client 
      client将比MIN大的数据(肯定小于等于100),传给server 
      server对这些数据进行比较,取前100个 
    PS:你的client很多么?即使100个client,每个client传100个数比较,也才10000个而已,应该很快的吧
    这个算法很好,O(∩_∩)O~