排序算法之选择排序

选择排序的思想是每次从未排序的部分中选择最小的元素,然后将其放在已经排序部分的末尾。

  1. 遍历数组,从第一个元素开始,将其视为当前最小元素。
  2. 在未排序的部分中,找到最小的元素,并记录其索引。
  3. 将最小的元素与当前位置的元素交换位置
  4. 重复步骤2和步骤3,直到遍历完整个数组

比如有一个数组arr=[8,2,4,5,1,6,0,1]

我们要进行选择排序,先选择最小的,然后选择第二小的,然后是选择第三小的,依次类推。

选择排序是一种是原地排序算法

选择排序算法是不稳定的排序算法

执行流程

  1. 从序列中找出最大的哪个元素,然后于最末尾的元素交换位置
  2. 执行完一轮之后,最后的哪个元素就是最大的元素
  3. 忽略掉上一轮中找到的最大元素,重复执行步骤1
java 复制代码
package com.lut.sort;

import java.util.Arrays;

public class SelectionSort {


    public static void main(String[] args) {
        int[] arr = {8,2,4,5,1,6,0,1};
        selectionSort(arr);
        System.out.println(Arrays.toString(arr));

    }

    public static void selectionSort(int[] arr){
        int n = arr.length;//获取数组的长度

        for (int i = 0; i < n-1; i++) {
            int minIndex = i;

            for (int j = i; j < n; j++) {
                if(arr[j] < arr[minIndex]){
                    minIndex = j;
                }
            }

            int temp = arr[minIndex];
            arr[minIndex] = arr[i];
            arr[i] = temp;
        }
    }
}
相关推荐
hi0_66 分钟前
03 数组 VS 链表
java·数据结构·c++·笔记·算法·链表
aPurpleBerry7 分钟前
hot100 hot75 栈、队列题目思路
javascript·算法
ChoSeitaku18 分钟前
NO.3数据结构栈和队列|顺序栈|共享栈|链栈|顺序队|循环队列|链队|双端队列|括号匹配|中缀表达式转后缀|后缀表达式求值
数据结构·microsoft
卷福同学2 小时前
【AI编程】AI+高德MCP不到10分钟搞定上海三日游
人工智能·算法·程序员
mit6.8242 小时前
[Leetcode] 预处理 | 多叉树bfs | 格雷编码 | static_cast | 矩阵对角线
算法
皮卡蛋炒饭.2 小时前
数据结构—排序
数据结构·算法·排序算法
??tobenewyorker3 小时前
力扣打卡第23天 二叉搜索树中的众数
数据结构·算法·leetcode
贝塔西塔3 小时前
一文读懂动态规划:多种经典问题和思路
算法·leetcode·动态规划
众链网络3 小时前
AI进化论08:机器学习的崛起——数据和算法的“二人转”,AI“闷声发大财”
人工智能·算法·机器学习
4 小时前
Unity开发中常用的洗牌算法
java·算法·unity·游戏引擎·游戏开发