iteye_10600 2010-07-31 20:28
浏览 198
已采纳

关于数组比较的算法

 

数组A 中存放 等级信息

数组B 中存放 高度信息

数组C 中存放 变化量信息

 

A、B、C中的信息都是一一对应的,数量都是相等的。

 

最大等级是已知的为3

 

现在比较这三个数组,按如下规则取出唯一一对记录(等级、高度、变化量)。

 

等级比较 ---> 高度比较 ---> 变化量比较

 

具体如下:

首先 取出等级A 中等级最大的的几对记录 ABC_1,

然后在 等级最大记录ABC_1中 比较高度,取出高度最大的几对记录ABC_2,

然后在 高度最大记录ABC_2中 比较变化量,最后取出变化量最大的几对记录 ABC_3。

 

当然了,如果以上三次比较中,任何一次结果为1条数据的话,就不用继续比较了。

 

不知道各位有什么好的算法建议。

  • 写回答

9条回答 默认 最新

  • adioakula 2010-08-01 02:13
    关注

    看这个吧,我测试过了,是按我上面理解的意思。最上面的程序少了两句话。

    import java.util.*;
    public class ArrayCompare{
    private ArrayList index = new ArrayList();
    private ArrayList _index = new ArrayList();

    public ArrayList<Integer> compare(int [] a,int [] b,int [] c){
    
        for(int i =0;i<a.length;i++){
            _index.add(i);
        }
        check(a);
        if(index.size() == 1)
            return index;
        check(b);
        if(index.size() == 1)
            return index;
        check(c);   
        return index;
    }
    
    public void check(int [] x){
        index.clear();
        int max = x[((Integer)_index.get(0)).intValue()];
        for(Integer i : _index){
            int ii = i.intValue();
            if(x[ii]>max){
                max=x[ii];
                index.clear();  
            }
            if(x[ii] == max)
                index.add(ii);
        }   
        _index.clear();
        _index.addAll(index);   
    }
    
    public static void main(String [] args)throws Exception{
        ArrayCompare ac = new ArrayCompare();
        int []a = new int[]{0,2,3,3,2,3,1};
        int []b = new int[]{2,3,7,6,4,7,8};
        int []c = new int[]{2,3,4,2,1,0,3};
        ArrayList<Integer> aa = ac.compare(a,b,c); 
        for(Integer i : aa){
            int ii = i.intValue();
            System.out.println(a[ii]);
            System.out.println(b[ii]);
            System.out.println(c[ii]);
        }   
    }
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R
  • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
  • ¥15 八路抢答器设计出现故障
  • ¥15 opencv 无法读取视频
  • ¥15 按键修改电子时钟,C51单片机
  • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))
  • ¥20 5037端口被adb自己占了
  • ¥15 python:excel数据写入多个对应word文档