liu312312
2012-10-30 16:51 阅读 204
已采纳

关于java中循环的问题

int[] a = {101,102,103,104,105};
int[] b ={11,12,13,14,15,16,17,18,19};

现在有2个数组我现在想 取得他们相减后的最小值 例如101-11=90 101-12=89 依次类推,最后我会得到5个对应关系101-->19;
102-->18;103-->17;104-->16;105-->15; 注意::不是2个数组中最小的相减

是数组a中的元素101,遍历数组b中的所有元素,算法是相减,101-11=90,101-12=89;一次类推,等到一个相减最小的一组数,这组数就是101-19;同理102也是同样的算法 得到的也是一组相减最小的,102-19; 但是同时要注意,b数组中的元素只能对应一个a数组中的元素,也就是101-19 =82;19已经与101对应了,所以102-19=83虽然是在102减去b数组中所有元素中是最小的,但是19不能与102对应,只能是18与之对应,,,一次类推,最后应该得出5个对应的数~~~
我应该怎么做呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

7条回答 默认 最新

  • 已采纳
    cpszgy cpszgy 2012-10-31 10:43

    既然只能循环,我想那就需要这么做。
    得用个对象[code="java"]
    class MinValue implements Comparable{
    int minuend;//被减数
    int meiosis;//减数
    int difference;//差值
    compareTo(MinValue o) {
    //以difference值比较大小
    }
    equals(Object o){
    //以meiosis判断重复
    }
    hashCode(){
    //以meiosis生成
    }
    }

    //然后有个数据结构。
    class HashTreeSet{
    int size;
    HashMap ;//去重用
    TreeSet;//排序用
    add(){
    //先判断是否有重复
    //有重复则比较这2个值。值小的留下,值大的从HashMap和TreeSet移走
    //不重复则判断size是否大于5,大于5跟TreeSet中最小的值比较,留下小的,移走大的
    //小于5则直接加入。
    }
    }
    [/code]
    这样不需数据排序。

    点赞 评论 复制链接分享
  • fang_fumin fang_fumin 2012-10-30 16:57

    1、将b数组排序结果为:b={19,18,17,16,15,14,13,12,11},
    2、循环a数组,取出b数组中对应的值就可以了。如a[0]->b[0]就是101->19...

    点赞 评论 复制链接分享
  • qq415241704 qq415241704 2012-10-30 17:22

    先把两个数组排序,然后[code="java"]int[] a = {101,102,103,104,105};
    int[] b ={11,12,13,14,15,16,17,18,19};
    int c = b.length;
    for(int i = 0 ; i < a.length ; i++){
    System.out.println(a[i]-b[c-i-1]);
    }[/code]

    点赞 评论 复制链接分享
  • fang_fumin fang_fumin 2012-10-30 17:54

    public static void main(String[] args)
    {
    int[] a = {101,102,103,104,105};
    int[] b ={11,12,13,14,15,16,17,18,19};
    int tempResult =0;
    int minResult =0;
    int minColIndex =0;
    for(int i=0;i {
    minResult =a[i];
    for(int j=0;j {
    if(b[j]==-1)
    {
    continue;
    }
    tempResult = a[i]-b[j];
    if(tempResult {
    minResult = tempResult;
    minColIndex = j;
    }
    }
    System.out.println(a[i]+"->"+b[minColIndex]);
    b[minColIndex]=-1;
    }
    }

    点赞 评论 复制链接分享
  • iteye_18271 iteye_18271 2012-10-30 17:57

    class A{
    private int[] a = {101,102,103,104,105};
    private int[] b ={11,12,13,14,15,16,17,18,19};
    public void deal()
    {
    int[] tem=b;
    for(int i=0;i<a.length;i++)
    {
    int temp=max(tem);
    System.out.println(a[i]+"-"+temp+" = "+(a[i]-temp));
    tem=remove(temp,tem);

        }
    
    } 
    private  int max(int a[])
    {
        int max=-1;
        for(int i=0;i<a.length;i++)
        {
            if(max<a[i])
                max=a[i];
        }
        return max;
    }
    private int [] remove(int max,int a[])
    { 
        int[] b =new int[a.length-1];
        int j=0;
        for(int i=0;i<a.length;i++)
        {
            if(max!=a[i])
            {
               b[j]=a[i];
                j++;
    
            }
        }
        System.arraycopy(a, 0, b, 0, a.length-1); 
        return b;
    }
    

    public static void main(String[] args){
    new A().deal();
    }

    }

    点赞 评论 复制链接分享
  • u011606457 _1_1_7_ 2012-10-31 08:25

    [code="java"]
    Arrays.sort(b);
    for(int i=0;i for(int j=a.length-1;j>=0;j--){
    System.out.println(a[i]+"-->"+b[j]);
    }
    }
    [/code]

    点赞 评论 复制链接分享
  • iteye_7115 iteye_7115 2012-10-31 09:30

    [code="java"]
    Arrays.sort(b);
    for (int i = 0; i < a.length; i++) {
    System.out.println(a[i] + " --> " + b[b.length - i - 1] );
    }
    [/code]

    将数组b按从小到大排序,然后依次遍历数组a,将a[i] 减去 b的倒数[b.length - i - 1]个元素即可

    点赞 评论 复制链接分享

相关推荐