选择排序

70 阅读1分钟

文字描述

1.将数组分为两个子集,一个是已排序的,一个是未排序的,每一轮从未排序的子集中选出最小的元素,放入已排序的子集当中

代码实现

import java.util.Arrays;

public class SelectionSort {
    public static void main(String[] args) {
        int[] a = {5,8,56,14,26,34,86,47};
        selection(a);
        System.out.println(Arrays.toString(a));
    }
    public static void selection(int[] a) {
        // 当数组 有8个元素,只需选择7次即可
        for (int i = 0; i < a.length-1; i++) {
            // i 代表每轮选择最小元素要交换到的目标索引
            int s = i; // s代表最小值的索引位置
            for (int j = s + 1; j < a.length; j++) {
                if(a[s] > a[j]) {
                    s = j;
                }
            }
            if(s != i) {
                swap(a,s,i);
            }
        }
    }
    public static void swap (int[] a, int i, int j) {
        int temp = a[i];
        a[i] = a[j];
        a[j] = temp;
    }
}