一个关于数据大小比较的业务需求不知道如何实现

问题描述:
1、现在随机生成1-10这10个数,不重复的。
例:5, 8,4, 6,3, 7, 1 , 9, 10 , 2
然后把他们按从左到右两两做为一组拆开,也就是五组数
分别是:
第一组:{5,8}, 5+8=13
第二组:{4,6}, 4+6=10
第三组:{3,7}, 3+7=10
第四组:{1,9}, 1+9= 10
第五组:{10,2} 10+2= 12
2、现在有业务需求:计算每组数据的两数之和,
并比较它们的大小,然后按两数之和大小进行排名。
补充:假如出现最后计算结果相等的情况,
例如:
现在就是第二、三、四组的最后计算结果相同,
那他们的排名规则是:取每组数中的最大数进行比较,哪组的最大数是最大的,
则该组在它们最后计算结果一样的情况下,它的排名最大。
例:第二、三、四组中;
第二组最大数为:6,
第三组最大数为:7,
第四组最大数为:9

那在它们三组最后计算结果相同的情况下,
它们的排序为:
第四组>第三组>第二组

那最后的排名结果是:
第一组>第五组>第四组>第三组>第二组

困难描述:如何用java代码实现这个功能,
新手码农求java老司机载一程,非常感谢!
我着实是不知道怎么弄。

3个回答

 package baokexiao.test;

import java.util.Arrays;
import java.util.Random;

public class Test {
    public static void main(String[] args) {
        int [] array = getRandomArray();
        System.out.println(Arrays.toString(array));
        int [][] arrayGruop = splitArray(array);
        System.out.println("------排序前--------");
        printArrayGroup(arrayGruop);
        sortArrayGroup(arrayGruop);
        System.out.println("------排序后--------");
        printArrayGroup(arrayGruop);

    }

    //数组排序
    public static void sortArrayGroup(int [][] arrayGruop){
        //冒泡排序
        for (int i = 0; i < arrayGruop.length -1; i++){    //最多做n-1趟排序
            for(int j = 0 ;j < arrayGruop.length - i - 1; j++){    //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
                if(compareArray(arrayGruop[j],arrayGruop[j + 1]) == -1){    //把小的值交换到后面
                    int [] temp = arrayGruop[j];
                    arrayGruop[j] = arrayGruop[j + 1];
                    arrayGruop[j + 1] = temp;
               }
           }            
        }
    }

    //数组比较大小
    public static int compareArray(int [] array1,int [] array2){
        int sum1 = getArraySum(array1);
        int sum2 = getArraySum(array2);
        if(sum1 > sum2) return 1;
        if(sum2 < sum2) return -1;
        int max1 = getArrayMaxVal(array1);
        int max2 = getArrayMaxVal(array2);
        if(max1 > max2) return 1;
        if(max1 < max2) return -1;
        throw new RuntimeException("can not compareArray,array1:"+Arrays.toString(array1)+" array2:"+Arrays.toString(array2));
    }

    //打印数组
    public static void printArrayGroup(int [][] array){
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j]+"\t");
            }
            System.out.println();
        }
    }

    //拆分数组
    public static int[][] splitArray(int [] array){
        int groupSize = array.length/2;
        int [][] result = new int[groupSize][2];
        int foot = 0 ;
        for (int i = 0; i < groupSize; i++) {
            int [] tmp = new int[2];
            tmp[0] = array[foot++];
            tmp[1] = array[foot++];
            result[i] = tmp;
        }
        return result;
    }

    //求数组中的最大值
    public static int getArrayMaxVal(int [] array){
        int max = array[0];
        for (int i = 1; i < array.length; i++) {
            if(array[i] > max) max = array[i];
        }
        return max;
    }

    //求数组的和
    public static int getArraySum(int [] array){
        int result = 0;
        for (int i = 0; i < array.length; i++) {
            result += array[i];
        }
        return result;
    }

    //创建数组
    public static int [] getRandomArray(){
        int [] result = new int [10];
        Random r=new java.util.Random();
        for (int i = 0; i < result.length; i++) {
            int t = r.nextInt(10)+1;//[1,10)
            while(checkRepeat(result,t)){
                t = r.nextInt(10)+1;
            }
            result[i] = t;
        }
        return result;
    }
    //查看是否重复
    public static boolean checkRepeat(int [] array,int t){
        for (int i = 0; i < array.length; i++) {
            if(t == array[i]) return true;
        }
        return false;
    }
}

图片说明

看了一下这个不难啊,楼主,但是代码得等一下贴上来。

用TreeSet是不是也可以 但是这个代码有很多bug


import java.util.Comparator;
import java.util.Random;
import java.util.TreeSet;

public class Test4Sort {


    private TreeSet< int[]> treeSet = new TreeSet<int[]>(new Comparator<int[]>() {
        @Override
        public int compare(int[] o1, int[] o2) {
            int sum1 = o1[0] + o1[1];
            int sum2 = o2[0] + o2[1];
            if(sum1 > sum2){
                return 1;
            }else if(sum1 == sum2){
                int max1 = o1[0] > o1[1] ? o1[0] : o1[1];
                int max2 = o2[0] > o2[1] ? o2[0] : o2[1];
                if(max1 > max2){
                    return 1;
                }else{
                    return -1;
                }
            }else{
                return -1;
            }
        }
    });

    public static void main(String[] args) {
        Test4Sort sort = new Test4Sort();

        for(int i=0;i<5;i++){
            int[] temp = new int[2];
            for(int j=0;j<2;j++){
                temp[j] = new Random().nextInt(10)+1;
            }
            sort.treeSet.add(temp);
        }

        for (int[] ints : sort.treeSet) {
            System.out.print(ints[0]+","+ints[1]+"<");
        }
    }

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
比较大小,不知道哪错了
麻烦运行下。。一运行就系统出错。。这样的错误很难找出。。rnrnrn[code=C/C++]#includernint max(int *,int n);rnint main(void)rnrn int ar[10];rn int i;rn printf("please enter some numbers:\n");rnrn for(i=0;i<10;i++)rn scanf("%d",ar[i]);rn printf("The max is:%d\n",max(ar,10));rnrn return 0;rnrnrnint max(int ar[],int n)rnrn int i;rn int m;rn for(i=0;iar[i+1])rn m=ar[i];rn elsern m=ar[i+1];rn rn return m;rn[/code]
一个关于大小比较的问题
变量a是不断递增的,但是到达某个值(比如128)后马上反转变成0然后再递增,rn或者说 a = (++a)%128,在a递增的过程当中记下两个值a1和a2,比较a1和a2的大小,rn例如a1 = 127, a2 = 1但是a2有可能是反转后的1,因此从时间先后关系来看a2应该是大于a1的,请问这种情况的大小比较如何实现呢?
如何比较一个一维数组的大小?
实际上也不是比较大小,只要比较是否相等就可以了?rn有没有什么直接的方法,不需要遍历所有的数组元素的?rnrn谢谢!
Android比较数据大小
在开发过程中,为了避免一些异常数据影响我们的程序,经常需要进行一些数据超出范围的比较,我们就会遇到很多字符串转换为基本数据类型或者基本数据类型之间的转换,比较麻烦和繁琐。Google给我们提供了一个BigDecimal类,可以忽视类型转换:BigDecimal bigDecimal = new BigDecimal(A); int result = bigDecimal.compareTo(new
比较两个数据的大小
package w; import java.util.Scanner; //添加输入库文件包 public class ConOperation { //创建类ConOperationpublic static void main(String[] args) { // TODO 自动生成的方法存根 int a,b,c; //定义变量 System.out.
java 比较数据大小
import java.io.*;//引入需要加';' public class text2 { public static void main(String[] args) { // int a = 2; // int b = 3; // if (b%2==0) { // System.out.println("可以整除"); // }else { // System.
关于多个数据比较大小的问题
定义个一维数组,把里面的数据按照从小到大的顺序排列起来,该如何比较,请写出完整程序代码
c++实现大小比较
c++实现大小比较.
业务需求
需求:要动态得产生一个新的增长型编号,形式如下:sys_00001,sys_00002,以此类推。现在的问题是:00002中的零怎么加上去?而且当超过10位、百位时怎么处理?
如何比较两个double型数据的大小?
因为精度丢失不能用>、<、==、!=,之前看网上的分享都是在于0作比较,那对于两个都是double的数据怎么判断哪个大、哪个小,亦或是两个相等?谢谢解答。
请问如何比较两组数据的大小?
我在做一个骰子游戏,比它们的大小。rn每个玩家各有5个随机数,请各如何写一个函数来比较这两个玩家的大小。rnrn详细规则如下:rnFive of a Kind--->Five dice of one number.rnFour of a Kind--->Four dice of one number; plus an unmatched dice of another number.rnFull House--->Three dice of one number and two dice of another number.rnStraight--->Five dice of sequential number.rnThree of a kind--->Three dice of the same number; plus two unmatched dice of other numbers.rnTwo Pair--->Two dice of the same number, two dice of another number; plus one unmatched dice.rnOne Pair--->Two dice of the same number; plus three other unmatched dice.rnSingle---->All dice of different number. The largest number will be counted.rn如果两个玩家的结果是相同Kind的话,即玩家一是五个五,玩家二是五个四的话,那玩家一大于玩家二。rnrn
smalldatetime类型的数据如何比较大小
smalldatetime类型的数据如何比较大小,应该不可以这样a>b(a和b是smalldatetime的变量)是吧 那该怎么比较呢
如何比较date类型数据的大小?
如:想要日期在2002-2-6到2003-5-5中的数据。用什么函数才可以比较两个日期的大小?难道要自己编写函数??
关于日期大小的比较!
各位师傅请问日期时间大小是怎么比较,实在着急,请给一点帮助吧?对你们肯定是个小问题了,等你们的好消息,谢谢!
关于比较大小问题
[code=VBScript]rnif cdbl(allgls)< cdbl(5) and cdbl(alllx)>cdbl(3) thenrn jg1=50+1.5*allgls*lfmrnend ifrnif cdbl(allgls)< cdbl(5) and cdbl(alllx)cdbl(3) thenrnresponse.write "hao"rn jg2=30+1.5*allgls*lfmrnend ifrnif cdbl(5)= cdbl(10) and cdbl(alllx)>cdbl(3) thenrn jg3=10+1*allgls*lfmrnend ifrnif cdbl(allgls)>= cdbl(10) and cdbl(alllx)
关于比较大小的问题
数据库产品价格字段以前是INT型.后来,我改成了:nvarchar型,现在有一个问题就是:我想对产品排序,nvarchar好像不行.rnrn二种方法:rnrn一种:我再把字段nvarchar类型改成INT型.不知道这样会不会改变nvarchar字段的数据rn二种:我在前台先把nvarchar用程序转化成INT型,再比较!rnrnrn那种方法比较好!
关于两位数的大小比较
我首先定义了一个TAB DB 08,18,69,56,89(不知道能不能这么定义)rn然后通过MOV AH,10 INT 21H输入一个两位数分别与TAB中数据比较,请问如何比较。谢谢
关于字符串大小的比较
if ('b0'<'b-')rnprint '1'rnrnif ('b099999'<'b-99999')rnprint '1'rnrnrn为什么两个判断的结果会不一样?
比较大小的一个程序
用一维数组的调用函数编写比较个整形数字的大小的一个小代码,可以比较任意几个或更多个整形的大小
RGB 数据如何量化,如何比较两个RGB数据的大小?
问题:如以下两个点rnA(170,122,102)、B(220,167,149),如何从“颜色深度”的角度量化他们,从而能够比较这两点的大小?rnrn原始问题:rn现在得到人脸识别后的数据,要对脸部的斑点、纹理进行处理,以得到某人的健康情况;rn我的思路:就斑点方面来说,我想对脸部数据(除眼睛、嘴巴)量化后做平均值,然后斑点偏离平均值比较多,如此能够将斑点抽离出来,这样就能够根据斑点偏离的程度去研究健康情况。rnrn第一次接触opencv,这是暂时的实现想法,望高手指教。
如何比较日期大小?
有一个表示时间的结构体[code=C/C++]typedef struct rnrn int year;rn int mouth;rn int day;rn int hour;rn int minute;rn int second;rn Time, *pTime;[/code]rn如何比较两个的大小啊,要求算法简洁效率高~谢谢大家啊
如何比较时间的大小?
现表a中有两个时间的字段,a.endtime 和a.realendtime rn我要判断这两个字段哪个时间更靠后,然后再用靠后的时间和系统当前时间比较。rn要是程序的意思就是if(a.endtime>a.realendtime )rnSQL=a.endtime
时间如何比较大小
字段2为时间函数 放的数据有5:00 6:30 22:00 21:00 等等rn rn但是用以下查询的结果是rnrn21:00rn22:00rn5:00rn6:30rnrnsql="select * from 表1 where 字段1='"&daynow&"' order by 字段2 asc"rnrn看看出错到哪了rnrn想要的结果是rnrn5:00rn6:30rn21:00rn22:00
日期如何比较大小
    //在数据库中oldtime和nowtime为date类型         Date dt1 = df.parse(oldtime);    Date dt2 = df.parse(nowtime);    if (dt1.getTime()&amp;lt;dt2.getTime()) { System.out.println(“haha”); } ...
字符串大小如何比较
选择有一个表TBrnrnArn11310-CT1120090501rn11310-CT1120090502rn11310-CT1120090801rnrn另外一个表TArn C Drn11310-CT1120090401 11310-CT1120090501rn11310-CT1120090502 11310-CT1120090701rnrn注明:字段A,C,D是一个批次号,且数据类型都是varcharrn选择要查询表TB中的A字段,条件是:如果表TB中的A字段的批次号,在表TA的C D的批次号范围内,就得到A字段的值rn比如表TB中的A字段11310-CT1120090501,是在表TA中11310-CT1120090401~11310-CT1120090501范围内,就列出A字段的rn11310-CT1120090501rnrn结果是rnrnArn11310-CT1120090501rn11310-CT1120090502rnrn请问,如何查询
如何比较时间的大小
Log4j打出的时间格式是rn2006-05-18 16:27:10,125rn而我现在要比较的时间大小,例如我在命令行输入rn2006-05-18 10:10:10rn那么我就只关注2006-05-18 10:10:10rn这个时间后面的日志信息rn但是现在的问题的是java好像没有提供直接时间比较的方法rn我查拉Date和Calendar两个类,好像也没有提供类似的方法rn我所以我现在想出来的办法就是rnINFO 2006-05-18 16:27:10,125 - -->1147940830125-->UPDATED-->DN=cn=傅贵服,ou=Groups,o=非官方个,o=党群事务部,dc=gmcc,dc=netrn1147940830125这个其实就是2006-05-18 16:27:10,125的millisecond标示rn对应代码就是System. currentTimeMillis(),rn当用户在命令行输入2006-05-18 10:10:10之后rnCalendar cal = Calendar.getInstance();rncal.set(2006, 5, 18, 10,10,10);rnlong stime = cal.getTimeInMillis(); //这也会是millisecond来标示的时间rn然后就可以通过毫秒时间来进行比较拉rn感觉这实在是无奈之举,因为log4j本身已经打印了当前时间,但是我为了比较时间大小又取了一次当前时间,而且如果log4j本身取当前时间的实现就用了System. currentTimeMillis(),那我的代码可真的是冗余之至。rn请问大虾还有其他方便的比较方法吗?我是不是很土阿rn
字符串如何比较大小?
比如:rnrnWCHAR *P1 = L"abdfg123";rnWCHAR *P2 = L"abefg125";rnrn如何比较P1与P2中的字符串哪个比较大?
实型变量如何比较大小
两个实型变量s1、s2,判断它们是否相等的语句是怎么写的?rnrn提这个问题有些脸红,初学者,请勿见怪。
如何比较时间大小
string startdate="18:30:00";rnstring enddate="02:30:00";rnstring nowdate="20:30:00";rnDatetime dstartdate=convert.todatetime(startdate);rnrnrn如何判断nowdate 是否在 startDate和EndDate间?注意startDate 和EndDate间差了一天rnrnrn
如何比较大小
想自动生成编码 如:20090821-01,20090821-02 (年月日-序号)rnrn但是不知道怎么比较两个编码的大小,主要是想从数据库中找出最大的编码。
如何比较日期大小
日期中包括年月日,时分秒,如何比较大小,是否要转换成double再比较
如何比较字符串大小
我有一组数据。格式如下rnFDG-1rnFDG-2rnFDG-3rnFDG-4rnFDG-5rn这样的数据如何比较大小。rn因为数字前都有‘-’,rn所以我想把‘-’定位再截取后面的数字进行比较,rn但是不知具体怎么做。rn希望哪位老大给出正确答案。rnrnrnrn
数组如何比较大小?
数组如何比较大小,比较的是地址吗?
BigDecimal如何比较大小
        BigDecimal是Java里精确计算的类,下面说一下两个BigDecimal对象大小,相等的判断。         一般的对象用equals,但是BigDecimal比较特殊,举个例子: BigDecimal a=BigDecimal.valueOf(1.0); BigDecimal b=BigDecimal.valueOf(1.000);         在现实中...
如何比较日期的大小
我的日期的格式是2003-05-25 比2003-05-04rn用js,谁有比较好的判断方法?
如何比较时间大小!!!
如何比较时间大小呢rn例如rn2003-10-10 12:12:12 和 2003-10-30 13:13:13 这种格式rn谢谢rn
关于一个数据比较问题?
tabel1下的A字段和table2下的B字段都是存的电话号码,我想比较一下这两个字段下不同的电话号码,并把他显示出来,这段程序有没有办法实现?(注:A字段和B字段是一种包含关系,也就是说A字段包含了B字段所有的号码)
关于BEAM 中一个比较困难的事情,不知道能不能实现.
现在想写一个BEAM 程序,希望不通过人工干预.rn也就是说在程序运行的时候就一直处于BEAM 状态.rn但是当完成一个BEAM 或 找不到数据接收源的情况下,会跳出一个信息对话框,说明rnBEAM 的情况,那么只有人工的去干预,TAP OK 按钮,程序才能继续执行下去.rnrn现在不希望上述的情况,希望能够在程序里去控制,而不是人工的去干预.rnrnrnrn
请问两个时间段的大小比较如何实现!
a1=2004-12-24 9:30:12rna2=2004-12-24 17:00:00rnrn如何比较二者的大小
如何实现两个日期时间之间大小的比较?
[code=Java]rn String orderdate="2012-02-27 19:21:11";rn SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");rn Date date=new Date();rn String date2=sdf.format(date);rn //orderdate 与 date2 如何进行时间比对,如何比对出哪个值要大?[/code]rnrn之前有想过转换成Int类型进行比对,但是长度太大了 ,超出了int类型的长度,哪位大哥能帮个忙么?
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表