要求编制函数 jsSort(),对任意几个在1000~9999之间的数,按每个数的后三位的大小进行升序排列,然后取出满足此条件的前5个数依次存入数组bb中,如果后三位的数值相等  

解决方案 »

  1.   

    没时间写了,饭都还没吃,说下思路吧,感觉是比较笨的办法,先把数字转换成字符串,取后3位再装换成整型,放进数组里,利用sort排序,然后……………………
      

  2.   

    void jsSort()
    {
       int num[] = {1111,2222,3333,1132};
       for(int i = 0; i < num.length; i++)
       {
           num[i] = num[i] % 1000;
       }
       Arrays.sort(num);
       System.out.println(Arrays.toString(num));
    }
      

  3.   

    还可以自己实现Comparator接口。然后借助Arrays进行排序。sort
    public static <T> void sort(T[] a,
                                Comparator<? super T> c)根据指定比较器产生的顺序对指定对象数组进行排序。数组中的所有元素都必须是通过指定比较器可相互比较的(也就是说,对于数组中的任何 e1 和 e2 元素而言,c.compare(e1, e2) 不得抛出 ClassCastException)。
    保证此排序是稳定的:不会因调用 sort 方法而对相等的元素进行重新排序。该排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n*log(n) 性能。 
    参数:
    a - 要排序的数组
    c - 确定数组顺序的比较器。null 值指示应该使用元素的自然顺序。 
    抛出: 
    ClassCastException - 如果数组包含使用指定的比较器不可相互比较的 的元素。
      

  4.   

    package com.xuz.csdn.july8;import java.util.Arrays;
    import java.util.Comparator;public class MySort { public static void main(String[] args) {
    MyNumber[] array = {new MyNumber(1003),new MyNumber(2000),new MyNumber(3002),new MyNumber(4000)};
    Arrays.sort(array, new Comparator<MyNumber>() {
    @Override
    public int compare(MyNumber o1, MyNumber o2) {
    if ((o1.num % 1000) > (o2.num % 1000)) {
    return 1;
    } else if ((o1.num % 1000) < (o2.num % 1000)) {
    return -1;
    }

    return 0;
    }
    });
    for (MyNumber myNumber : array) {
    System.out.println(myNumber.num);
    }
    }}class MyNumber {
    int num ;

    public MyNumber(int num){
    this.num = num;
    }
    }
      

  5.   


    /**
    要求编制函数 jsSort(),对任意几个在1000~9999之间的数,按每个数的后三位的大小进行升序排列,
    然后取出满足此条件的前5个数依次存入数组bb中,如果后三位的数值相等   
    *///package com.ricky.www;import java.util.Arrays;
    import java.util.Random;public class Test{
    public static void main(String[] args){ Random random = new Random(); Num[] nums = new Num[100]; for(int i = 0 ; i < 100 ; i ++){
    nums[i] = new Num(1000 + random.nextInt(8999));
    }

    int i = 0; for(Num num : nums){ System.out.printf("%-5s",num); if(++ i % 10 == 0){
    System.out.println(num);
    }
    }

    Arrays.sort(nums); System.out.println("----------------------------------------------"); for(Num num : nums){ System.out.printf("%-5s",num); if(++ i % 10 == 0){
    System.out.println(num);
    }
    } System.out.println("----------------------------------------------"); Num[] num1 = new Num[5]; //num1为需要的前5个元素组成的数组 for(int k = 0 ; k < 5 ; k ++){
    num1[k] = nums[k];
    }
    } public static class Num implements Comparable<Num>{
    int num = 0; public Num(int num){
    this.num = num;
    } public int compareTo(Num e1){
    String str1 = (e1.num + "").substring(1);
    String str2 = (this.num + "").substring(1); return str2.compareTo(str1);
    } public String toString(){
    return num + "";
    }
    }
    }
      

  6.   

    原来是重写compare方法 今天回来看 终于看明白了