java排序之 选择排序

来源:互联网 发布:顶点软件股票 编辑:程序博客网 时间:2024/05/18 06:24
 下面是个人对选择排序的理解,如有不正确的地方或者更好的方法请指正,谢谢。。。
选择排序 思路。 
每次拿第一个和之后的所有比较 找出最小的换位置直到所有的比较完
public class SelectionSort {    /**     * 降序 选择排序     *     *     * 此方法有个缺点  内层的每次比较都会交换数据     *     * @param list     *///    public void sort(ArrayList<Integer> list) {//        int temp = 0;//        if (list.isEmpty()) {//            return;//        }//        for (int i = 0; i < list.size(); i++) {//            for (int j = i + 1; j < list.size(); j++) {//                if (list.get(i) < list.get(j)) {//                    temp = list.get(i);//                    list.set(i, list.get(j));//                    list.set(j, temp);//                }//            }//        }//    }    /**     * 降序 选择排序     * <p>     * <p>     * 上面方法的优化版     *     * @param list     */    public void sort(ArrayList<Integer> list) {        int temp = 0;        int maxIndex = 0;        if (list.isEmpty()) {            return;        }        for (int i = 0; i < list.size() - 1; i++) {            maxIndex = i;            for (int j = i + 1; j < list.size(); j++) {                if (list.get(maxIndex) < list.get(j)) {                    maxIndex = j;                }            }            if (i != maxIndex) {                temp = list.get(i);                list.set(i, list.get(maxIndex));                list.set(maxIndex, temp);            }        }    }}

测试:

public class Test {    public static void main(String[] args) {        /************排序**********/        ArrayList<Integer> list = new ArrayList<Integer>(10);        list.add(2);        list.add(5);        list.add(3);        list.add(22);        list.add(3);        list.add(6);        list.add(9);        list.add(10);        list.add(11);        list.add(14);        list.add(27);        list.add(10);        list.add(32);        list.add(44);        list.add(55);        list.add(100);        SelectionSort selectionSort = new SelectionSort();        selectionSort.sort(list);        print(list);    }    private static void print(List list) {        for (int i = 0; i < list.size(); i++) {            System.out.println(list.get(i));        }    }}

输出:
100
55
44
32
27
22
14
11
10
10
9
6
5
3
3
2



原创粉丝点击