Java数组排序

一、sort()进行排序

  升序:

public class Main {

    public static void main(String[] args) {
        int[] scores = new int[] {3,1,5,6,4};
        for (int i = 0;i<scores.length;i++){
            System.out.println(scores[i]);
        }
        Arrays.sort(scores);
        for (int j = 0;j<scores.length;j++){
            System.out.println(scores[j]);
        }

    }
}

  降序:

  •   Collections.reverseOrder()方法
public class Main {

    public static void main(String[] args) {
        Integer[] a = {3,4,5,1,2};
        Arrays.sort(a, Collections.reverseOrder());
        for (int i = 0;i<a.length;i++){
            System.out.println(a[i]);
        }
    }
}
  • 实现 Comparator 接口的复写 compare() 方法
public class Main {

    public static void main(String[] args) {
        Integer[] a = {3,4,5,1,2};
        Comparator cmp = new MyComparator();
        Arrays.sort(a, cmp);
        for (int i = 0;i<a.length;i++){
            System.out.println(a[i]);
        }
    }

}
class MyComparator implements Comparator<Integer>{
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2 - o1;
    }
}

二、冒泡排序

  排序思路:比较数组两个相邻的元素,如果满足条件就交换元素,把较小的元素移至数组前面,较大的元素移至数组后面,这样较大元素会像气泡一样上升至顶部。

 

public class Demo01 {
    public static void main(String[] args) {
        double[] score = {6,1,5,3,4};
        for (int i = 0; i < score.length - 1; i++) {
            // 比较相邻两个元素,较大的数往后冒泡
            for (int j = 0; j < score.length - 1 - i; j++) {
                if (score[j] > score[j + 1]) {
                    double temp = score[j + 1]; // 把第一个元素值保存到临时变量中
                    score[j + 1] = score[j]; // 把第二个元素值转移到第一个元素变量中
                    score[j] = temp; // 把临时变量(第一个元素的原值)保存到第二个元素中
                }
                System.out.print(score[j] + " "); // 对排序后的数组元素进行输出
            }
            for (int j = score.length - 1 - i; j < score.length; j++) {
                System.out.print(score[j] + " ");
            }
        }
    }
}

 

posted @ 2020-04-04 13:05  久别重逢  阅读(1586)  评论(0编辑  收藏  举报