首先在未排序序列中找到最小的元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小的元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

 

clip_image002

第0次排序

首先认为4最小,然后依次比较

clip_image004

找到最小值1

clip_image006

由于是第0次排序,把找到的最小值1跟第0个数字交换位置

clip_image008

然后开始第1次排序,【再从未排序的数字中找到最小的值与第1个数字交换】

import java.util.Arrays;

public class SelectSort {

    public static void main(String[] args) {
        int[] arr = { 0, 0, 100, 5, 3, 2,8 ,0, 9,5,4};
        selectSort(arr);
        System.out.println(Arrays.toString(arr));
    }

    public static void selectSort(int[] arr) {
        //共比较length-1轮
        for(int i=0;i<arr.length-1;i++) {
            //每轮跟哪些数字比较
            int min =arr[i];
            //最小值的下标
            int k =i;
            for (int j = i+1; j < arr.length; j++) {
                if (arr[j]<min) {
                    min = arr[j];
                    k=j;
                }
            }
            
            arr[k]=arr[i];
            arr[i] = min;
        }
    }
}

输出

[0, 0, 0, 2, 3, 4, 5, 5, 8, 9, 100]
posted on 2019-04-01 14:35  源格  阅读(152)  评论(0编辑  收藏  举报