选择排序算法-简单选择排序

本文深入讲解简单选择排序算法,包括其基本原理、Java实现、时间复杂度、空间复杂度及算法稳定性。简单选择排序是一种基础排序算法,通过多次选择序列中的最小元素并将其置于序列前端,实现序列的有序排列。

算法简介

简单选择排序(Select Sort)或者叫直接选择排序,可以说是排序算法中最简单的一个,同时它的思路也很简单明了,就是通过多轮选择,每轮选择中找到那个最小的数放在该轮序列的最前面,经过 array.length -1 轮之后就可以找到所有轮次中最小的那个然后从小到大的顺序就排好了。

简单选择排序一般来讲不稳定,时间复杂度 O(n^2),空间复杂度 O(1)

Java 实现

逻辑描述:

会经过多轮循环,每轮循环中先令当前轮次序列中最头部的元素为最小元素,然后遍历到序列尾找到最小的值,然后把最小元素的下标保存下来,并将头部元素和最小的那个元素交换一下位置,之后便开启下一次轮次的循环

简单来讲就是经过多轮循环,每次找到最小的那个放在头部

算法图解:
在这里插入图片描述

代码实现:

// 简单选择排序
public static int[] selectSort(int[] arr) {
    // 第一层循环代表要经过多少轮筛选,每轮会筛选到该轮中最小的数字并放在前面
    for(int i=1; i<=arr.length-1; i++) {
        // 用来存每轮循环中最小的那个数的下标
        int mix = i - 1;
        // 第二层循环代表该轮筛选中不断循环向后找寻最小的那个数字
        for(int j=i-1; j<arr.length; j++)
            if(arr[mix] > arr[j])
                mix = j;
        int tmp = arr[i-1];
        arr[i-1] = arr[mix];
        arr[mix] = tmp;
    }
}

时间复杂度

O(n^2)

空间复杂度

O(1)

算法稳定性

一般来讲简单选择排序是不稳定的排序算法

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abcnull

您的打赏是我创作的动力之一

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值