数组排序(转载)和List类型排序

/**
 * @Test
 */
package arrayssort;

/**
 * @author wangjian2
 * 创建日期  2012-8-29
 * version 1.0
 * description 请用一句话描述该类
 */
import java.util.Arrays;
import java.util.Comparator;

public class ArraySortDemo {
    /** 
    * 整数型数组排序
    */
    public void sortIntArray() {
        int[] arrayToSort = new int[] {48, 5, 89, 80, 81, 23, 45, 16, 2};
        System.out.println(" 整数型数组排序,排序前: ");
        for (int i = 0; i < arrayToSort.length; i++) {
            System.out.print(arrayToSort[i] + " , ");
        }
        //  调用数组的静态排序方法sort 
        Arrays.sort(arrayToSort);
        System.out.println();
        System.out.println(" 排序后: ");
        for (int i = 0; i < arrayToSort.length; i++) {
            System.out.print(arrayToSort[i] + " , ");
        }
    }

    /** 
    * 字符型数组排序demo
    */
    public void sortStringArray() {
        String[] arrayToSort = new String[] {" Oscar ", " Charlie ", " Ryan ", " Adam ", " David ", " aff ", " Aff "};
        System.out.println();
        System.out.println(" 字符型数组排序,排序前: ");
        for (int i = 0; i < arrayToSort.length; i++) {
            System.out.print(arrayToSort[i] + " , ");
        }
        System.out.println();
        System.out.println(" 排序后: ");
        //  调用数组的静态排序方法sort 
        Arrays.sort(arrayToSort);

        for (int i = 0; i < arrayToSort.length; i++) {
            System.out.print(arrayToSort[i] + " , ");
        }
    }

    /** 
    * 对象数组排序demo
    */
    public void sortObjectArray() {
        Dog o1 = new Dog(" dog1 ", 1);
        Dog o2 = new Dog(" dog2 ", 4);
        Dog o3 = new Dog(" dog3 ", 5);
        Dog o4 = new Dog(" dog4 ", 2);
        Dog o5 = new Dog(" dog5 ", 3);
        Dog[] dogs = new Dog[] {o1, o2, o3, o4, o5};
        System.out.println();
        System.out.println(" 对象数组排序排序前: ");
        for (int i = 0; i < dogs.length; i++) {
            Dog dog = dogs[i];
            System.out.print(dog.getName() + " [ " + dog.getWeight() + " ], ");
        }
        Arrays.sort(dogs, new ByWeightComparator());
        System.out.println();
        System.out.println(" 排序后: ");
        for (int i = 0; i < dogs.length; i++) {
            Dog dog = dogs[i];
            System.out.print(dog.getName() + " [ " + dog.getWeight() + " ], ");
        }
    }

    public static void main(String[] args) {
        ArraySortDemo t = new ArraySortDemo();
        t.sortIntArray();
        t.sortStringArray();
        t.sortObjectArray();
    }

    /** 
    * 定义了一个Dog类
    */
    class Dog {
        private String name;
        private int weight;

        public Dog(String name, int weight) {
            this.setName(name);
            this.weight = weight;
        }

        public int getWeight() {
            return weight;
        }

        public void setWeight(int weight) {
            this.weight = weight;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getName() {
            return name;
        }
    }

    /** 
    * 因为要对对象进行排序,所以要实现java.util.Comparator接口的compare(T o1, T o2)方法,在该方法中自定义排序算法。
    */
    class ByWeightComparator implements Comparator {
        public final int compare(Object pFirst, Object pSecond) {
            int aFirstWeight = ((Dog)pFirst).getWeight();
            int aSecondWeight = ((Dog)pSecond).getWeight();
            int diff = aFirstWeight - aSecondWeight;
            if (diff > 0)
                return 1;
            if (diff < 0)
                return -1;
            else
                return 0;
        }
    }
}

如果是List类型排序,则用Collections.sort来排序。

能否用快速排序来排序数组?

原文地址:https://www.cnblogs.com/usual2013blog/p/2683251.html