选择排序

/**
 * 选择排序
 */
@Service
public class SelectionSort implements Sort {

    @Override
    public String getName() {
        return "选择排序";
    }

    @Override
    public int[] sortArray(int[] nums) {
        int t, max;
        for (int i = 0; i < nums.length; i++) {
            //寻找max下标位置
            max = 0;
            for (int j = 0; j < nums.length - i; j++) {
                if (nums[j] > nums[max]) {
                    max = j;
                }
            }
            //交换
            t = nums[max];
            nums[max] = nums[nums.length - 1 - i];
            nums[nums.length - 1 - i] = t;
        }
        return nums;
    }

}

逻辑解释:
选择排序跟冒泡排序很相似,都是通过外层的一次循环,把待排序的数组中最大的数找出来并放在它应该在的位置上。不过与冒泡排序不同的是,冒泡排序交换的次数比较多,而选择排序交换的次数比较少。因为冒泡排序是每次对比相邻的元素,都有可能会进行交换,而选择排序是直接找出待排序中最大的数,最后再进行交换,由此交换次数会比冒泡排序少。


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍