排序算法-选择排序

选择排序是也是一种简单粗暴的排序算法。实现原理是一直找无序序列中的最小值(或者最大值)与待排序下标进行交换。

1.代码实现

以java实现为例:

public class SelectionSort {
    public static int[] selectionSort(int[] nums) {
        //循环遍历序列的每一个下标
        for (int i = 0; i < nums.length; i++) {
            int minIndex = i; //记录当前无序序列最小元素下标
            for (int j = i; j < nums.length; j++) {
                if(nums[minIndex] > nums[j]){
                    minIndex = j;
                }
            }
            //如果最小元素下标不是待排序下标,就将两个元素交换,把当前最小元素放到当前排序下标中
            if(minIndex!=i){
                int temp = nums[minIndex];
                nums[minIndex] = nums[i];
                nums[i] = temp;
            }
        }
        return nums;
    }

    public static void main(String[] args) {
        int[] nums = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 10 };
        int[] newNums = selectionSort(nums);
        for (int x : newNums) {
            System.out.print(x+" ");
        }
    }
}

2.数据运行解析 

数据的分解示例如下

[9 8 7 6 5 4 3 2 10]    每次拿到最小元素与待排序下标交换
->[2 8 7 6 5 4 3 9 10]
->[2 3 7 6 5 4 8 9 10]
->[2 3 4 6 5 7 8 9 10]
....

3.复杂度分析

选择排序在最好最差和平均时间复杂度都是O(n²),空间复杂度为T(1)。

 

posted @ 2020-12-08 16:20  白诗  阅读(53)  评论(0编辑  收藏  举报