经典排序算法之Java实现简单选择排序详解

1.简单选择排序的思路

简单选择排序的思想就第一次从数组中选出最小(也可以是最大)的数与数组中的第一个数进行交换,第二次从数组中选出最小的数与数组中的第二个数进行交换......,直到确定a[n]和a[n-1]的顺序。

2.图解

image.png

3.代码实现

通过分析得到简单选择排序的特点:
(1)对于一个长度为n的数组需要进行n-1趟排序。
(2)每趟排序都会选择出最小(或最大)的数值,比较过程中不进行交换,只有遍历结束获得待排部分中的最小值(或最大值)后才会进行交换。
(3)对于第i趟排序来说会进行n-i次比较。
具体代码如下:

      public static void main(String[] args) {
        //创建一个待排数组
        int[] arr = {1,3,5,4,2};
        //用于记录待排序列中的最小值
        int min;
        //用于记录最小值的索引
        int minIndex;
        //对于长度为n的数组,共需n-1趟排序
        for (int i = 0; i < arr.length-1; i++) {
            //假定待排部分中第一个数为最小
            min = arr[i];
            minIndex = i;
            //比较出最小的数值以及其索引
            for (int j = i+1; j <arr.length ; j++) {
                if (min>arr[j]){
                    //min中的值不是最小值,重新赋值
                    min=arr[j];
                    //记录最小值的存放位置
                    minIndex = j;
                }
            }
            if (i!=minIndex){
                //待排部分首个数字不是最小的,交换数值
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
        }
    }

新手上路欢迎大佬指教!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。