排序---选择排序

选择排序

  从数组中选择最小的元素,将它与数组的第一个元素交换位置,然后再从数组剩下的元素中选择出最小的元素,将它和数组的第二个元素交换位置。不断这样操作,直到整个数组排序。

  选择排序需要大约n*n/2次比较, 和约n次交换,它的运行时间与输入无关,这个特点使得它对一个排序数组也需要做这么多的比较和交换操作。

public class Sort{
    public static void selectionSort(int []arr){
        if(arr==null||arr.length<2)
            return;
        for(int i=0;i<arr.length-1;i++){
            int minIndex=i;
            for(int j=i+1;j<arr.length;j++){
                minIndex=arr[j]<arr[minIndex]?j:minIndex;
            }
            swap(arr,minIndex,i);
        }
    }
    public static void swap(int[]arr,int minIndex,int i){
        int tmp=arr[i];
        arr[i]=arr[minIndex];
        arr[minIndex]=tmp;
    }
}
原文地址:https://www.cnblogs.com/yjxyy/p/11101616.html