自定义定制排序

sort() 方法自然排序 【默认:从小到大】

package com.arrays;

import java.util.Arrays;
import java.util.Comparator;

public class ArrarysCommonMethods {
    public static void main(String[] args) {
        // sort 排序 (自然排序和定制排序) Integer arr[] ={1, 3, 2, 4, 0, 9, -5};
        int arr[] = { 1, 3, 2, 4, 0, 9, -5 };
        Arrays.sort(arr);

        // 输出数组
        System.out.println(Arrays.toString(arr)); // 总是【默认】从小到大输出
  }
}

使用系统的 Comparator 接口实现定制排序

import java.util.Arrays;
import java.util.Comparator;

public class ArrarysCommonMethods {
    public static void main(String[] args) {
        
     // 【定制排序】
    Integer arrs[] = { 1, 3, 2, 4, 0, 9, -5 }; // 装箱
    Arrays.sort(arrs, new Comparator<Integer>() {

        @Override
        public int compare(Integer o1, Integer o2) {
            return o2 - o1; // 将o2和o1位置互换又为从小到大
        }
    });

    System.out.println("arrs定制排序后" + Arrays.toString(arrs));    
  }
}

使用冒泡法实现自定义定制排序

import java.util.Arrays;
import java.util.Comparator;

public class ArrarysCommonMethods {
    public static void main(String[] args) {
        
     // 默认实现如何实现定制排序的
     // 使用冒泡法完成
    int myarr[] = { 1, -1, 4, 3, 9, -2, 8 };
    MyArrys.sort(myarr, new MyComparator() {
            
        @Override
        public int compare(int n1, int n2) {
            return n2-n1;
        }
    });
    System.out.println("自己使用冒泡写的定制排序:" + Arrays.toString(myarr));
    }
}

interface MyComparator {
    public int compare(int n1, int n2);
}

class MyArrys {
    // 静态方法
    public static void sort(int[] arr, MyComparator comparator) {
        // 冒泡
        int temp = 0;
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                // 判断
                if (comparator.compare(arr[j], arr[j + 1]) > 0) {
                    // 交换
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
}    

 

posted @ 2020-03-12 17:07  蜜桃先生  阅读(354)  评论(0编辑  收藏  举报