java list<integer>一组不连续的数字进行每10个一组分组,要求各组元素之和差值最小。list%10>=5的单独算一组,否则归并到任意一组。

来源:互联网 发布:淘宝震动棒买家秀图片 编辑:程序博客网 时间:2024/05/16 01:36
请大家多多指教
public static void main(String args[]) {    ArrayList<Integer> list = new ArrayList<Integer>();    //集合分组的组数    int group = 0;    //最后一组分离标记下标的位置    int lastIndex=0;    for (int i = 0; i < 49; i++) {        list.add((int) (Math.random() * 10000));    }   System.out.println("排序前:" + Arrays.toString(list.toArray()));
//集合排序    Collections.sort(list);    System.out.println("排序后:" + Arrays.toString(list.toArray()));    if (list.size() % 10 >= 5) {        group = list.size() / 10 + 1;    } else {        group = list.size() / 10;    }    List newList=new ArrayList();    if(list.size()>=15){        for(int i=0;i<group-1;i++){            int m=0+5*i;            ArrayList<Integer> list1 = new ArrayList<Integer>();            list1.add(list.get(m));            list1.add(list.get(m+1));            list1.add(list.get(m+2));            list1.add(list.get(m+3));            list1.add(list.get(m+4));            list1.add(list.get(list.size()-m-1));            list1.add(list.get(list.size()-m-2));            list1.add(list.get(list.size()-m-3));            list1.add(list.get(list.size()-m-4));            list1.add(list.get(list.size()-m-5));            Collections.sort(list1);            newList.add(list1);            lastIndex=m+5;        }        //System.out.println(num);        ArrayList<Integer> list2 = new ArrayList<Integer>();        for(int j=lastIndex;j<list.size()-lastIndex;j++){            list2.add(list.get(j));        }        newList.add(list2);        //System.out.println("大于15个元素的"+newList.toString());        for(int i=0;i<newList.size();i++){            System.out.println(""+i+"个元素的值"+newList.get(i).toString());        }    }else{        newList.add(list);        System.out.println("小于15个元素的"+newList.toString());    }}
1 0