亲宝软件园·资讯

展开

排序算法图解之Java选择排序

兴趣使然黄小黄 人气:0

1.选择排序简介

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

2.图解选择排序算法

选择排序的基本思想如下:

第一次:从arr[0]~arr[n-1]中选取最小值,与arr[0]进行交换;

第二次:从arr[1]~arr[n-1]中选取最小值,与arr[1]进行交换;

第三次:从arr[2]~arr[n-1]中选取最小值,与arr[2]进行交换;

第 i 次:从arr[i]~arr[i-1]中选取最小值,与arr[i]进行交换;

总共通过n-1次,可以得到从小到大的有序序列。

以序列:{8, 3, 2, 1, 7, 4, 6, 5} 为例!分步骤图解如下:

思路说明:

1.在每趟排序时,都假定当前位置的元素为最小值,如果在遍历过程中发现有比当前位置元素还小的值,则替换最小值。(先将最小值记录,此趟遍历完成再替换)

2.选择排序一共有数组大小-1趟排序。

3.选择排序代码实现

import java.util.Arrays;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * 选择排序
 */
public class SelectSort {

    public static void main(String[] args) {
        int[] array = {8, 3, 2, 1, 7, 4, 6, 5};
        System.out.println("排序前: " + Arrays.toString(array));
        selectSort(array);
        System.out.println("排序后: " + Arrays.toString(array));
    }

    //选择排序
    public static void selectSort(int[] arr){
        //选择排序过程
        for (int i = 0; i < arr.length - 1; i++) {
            int minIndex = i; //假定最小索引,最小值为第一个元素
            int min = arr[minIndex];
            for (int j = i + 1; j < arr.length; j++) {
                if (min > arr[j]){
                    //更新最小值
                    min = arr[j];
                    minIndex = j;
                }
            }
            //将最小值放进arr[i]
            if (i != minIndex){
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
            //输出每轮排序后的结果
            System.out.println("第" + (i+1) + "趟: " + Arrays.toString(arr));
        }
    }
}

运行结果如下:

加载全部内容

相关教程
猜你喜欢
用户评论