从零单刷数据结构(Java描述)(十六)——排序(选择排序)之简单选择排序

简单选择排序(Simple Selection Sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录交换之。算法复杂度O(n^2),一种稳定的排序算法。

//选择排序
    public static void selectSort(int[]arr) {
        //遍历所有的数
        for (int i = 0; i < arr.length; i++) {
            int minIndex=i;
            //把当前遍历的数和后面所有的数依次进行比较,并记录下最小的数的下标,这里容易记错,是从i+1开始
            for (int j = i+1; j < arr.length; j++) {
                //如果后面比较的数比记录的最小的数小
                if(arr[minIndex]>arr[j]){
                    //记录下最小的那个数的下标
                    minIndex=j;
                }
            }
            //如果最小的数和当前遍历数的下标不一致,说明下标为minIndex的数比当前遍历的数要小
            if(i!=minIndex){
                int tmp=arr[i];
                arr[i]=arr[minIndex];
                arr[minIndex]=tmp;
            }
        }    
    }
import java.util.Arrays;
//测试类
class SelectSort{
    public static void main(String[] args) {
        int[]arr=new int[]{5,3,1,5,2,4};
        selectSort(arr);
        //输出1 2 3 4 5 5
        System.out.println(Arrays.toString(arr));
    }
}

猜你喜欢

转载自blog.csdn.net/waS_TransvolnoS/article/details/91346441
今日推荐