vlambda博客
学习文章列表

(一)Java最简单选择排序算法

不知不觉,今年已经大半年 时间就过去了,很多公司秋招已经开始了,然后数据结构 与算法就是公司常拿来考察同学们的基础,今天我们一起来学习Java中最简单的算法,叫选择排序算法。

正文

选择排序算法,是一种简单直观的排序算法,它的思路是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。但是注意选择排序它是不稳定的排序方法的。

代码演示

package com.mark.algorithm;

import java.util.Arrays;

/**
 * @Author MarkJava
 * @Date 2020/7/15 13:44
 **/

public class SelectionSort4 {
    public static void sort(int[] arr){
        for (int i = 0; i < arr.length; i++){
            int minIndex = i;
            int min = arr[i];
            for (int j = i+1; j < arr.length; j++){
                if (min < arr[j]){
                    min = arr[j];
                    minIndex = j;
                }
            }
            if (minIndex != i){
                arr[minIndex] = arr[i];
                arr[i] = min;
            }

        }
    }
    public static void main(String[] args) {
        int[] arr = {9,8,7,6,3,4,5};
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

时间复杂度

选择排序的时间复杂度为 O(n^2),第一次需要检查n个元素,随后检查的元素数依次为n - 1, n – 2, …, 2和1。所以说平均每次检查的元素数为1/2 * n, 所以运行时间也就是为 n * 1/2 * n。简单地写作 O(n^2)。

在这里插入图片描述