选择排序

package foo;

import java.util.Arrays;

public class Main {
    
    public static void selectionSort(int[] a, int len) {
        int in, out, min;
        for (out=0;out<len-1;++out) {
            min = out;
            for (in=out+1;in<len;++in) {
                if(a[in]<a[min]) {
                    min = in;
                }
            }
            swap(a, out, min);
        }
    }
    
    public static void swap(int[] a, int index1, int index2) {
        int temp = a[index1];
        a[index1] = a[index2];
        a[index2] = temp;
    }
    
    public static void main(String[] args) throws Exception {
        int[] a = new int[]{3,2,1,5,4};
        selectionSort(a, a.length);
        System.out.println(Arrays.toString(a));
    }
}

选择排序的效率:O(N*N),比较N*N/2,交换<N; 选择排序与冒泡排序比较,比较次数没有明显改变,但交换次数明显减少了很多

原文地址:https://www.cnblogs.com/qrlozte/p/3793251.html