魔术桌
  • 更新日志
  • 新闻资讯
  • 数据资产
  • 网站导航
  • 订阅推荐
  • 商品推广
  • 日记
  • 摘录
  • 论文
  • 方案
  • 技术
  • 风格
  • 视觉
  • 原材料
  • 加工工艺
  • 元器件
  • 产品设备
  • 设计模式
  • 数据结构
  • 算法设计
  • 软件架构
  • 程序语言
  • 代码类库
  • 操作系统
  • 软件包
  • 健康
  • 环境
  • 社会
  • 道德
  • 法律
  • 经济
  • 政策
  • 更新日志
  • 新闻资讯
  • 数据资产
  • 网站导航
  • 订阅推荐
  • 商品推广
  • 日记
  • 摘录
  • 论文
  • 方案
  • 技术
  • 风格
  • 视觉
  • 原材料
  • 加工工艺
  • 元器件
  • 产品设备
  • 设计模式
  • 数据结构
  • 算法设计
  • 软件架构
  • 程序语言
  • 代码类库
  • 操作系统
  • 软件包
  • 健康
  • 环境
  • 社会
  • 道德
  • 法律
  • 经济
  • 政策
  • Algorithm - 排序 - 选择排序

文章摘要: 工作原理是首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

简介

简要说明

  • 工作原理是首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

主要功能

  • 在未排序的数组中找到最小(或最大)元素,并将其放到正确的位置。
  • 通过重复选择剩余元素中的最小(或最大)元素,逐步构建有序序列。

注意事项

  • 选择排序是不稳定的排序算法,因为在选择最小元素时可能会改变相同元素的相对顺序。
  • 它不适用于数据量大的情况,因为其时间复杂度较高。

适用场景

  • 数据量较小的排序场景。
  • 教学或演示排序算法原理时。

时间复杂度

  • 最优、平均、最坏情况:O(n^2)

空间复杂度

  • O(1),选择排序是原地排序算法。

Java 8

public class SelectionSort {

    // 主方法调用选择排序
    public static void main(String[] args) {
        int[] array = {64, 25, 12, 22, 11};
        selectionSort(array);
        System.out.println("Sorted array: " + Arrays.toString(array));
    }

    // 选择排序方法
    public static void selectionSort(int[] array) {
        int n = array.length;

        // 遍历数组所有元素
        for (int i = 0; i < n - 1; i++) {
            // 找到从i到n-1中最小元素的索引
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (array[j] < array[minIndex]) {
                    minIndex = j;
                }
            }

            // 将找到的最小元素与第i个位置的元素交换
            int temp = array[minIndex];
            array[minIndex] = array[i];
            array[i] = temp;
        }
    }
}

注释

在这个Java案例中,selectionSort 方法实现了选择排序算法。外层循环控制排序的趟数,内层循环负责在未排序的元素中找到最小元素的索引。找到最小元素后,将其与未排序序列的第一个元素交换。这个过程一直重复,直到整个数组排序完成。

更新时间: 2025/10/3 17:56