排序算法-选择排序

思想

首先,从未排序的序列中找到最小的元素。将这个最小的元素与未排序部分的第一个元素交换位置。

接着,排除已排序的部分,继续从剩下的未排序序列中重复上述步骤,直到所有元素都排好序。

具体步骤

假设你有一个包含 𝑛n 个元素的列表,选择排序的具体步骤可以描述为:

初始化已排序部分为空,未排序部分为整个列表。

从未排序部分中找出最小的元素,记录其索引。

将该最小元素与未排序部分的第一个元素交换位置。

更新已排序部分,将未排序部分的第一个元素划入已排序部分。

重复以上过程,直到未排序部分只剩一个元素,排序完成。

代码实现

python 复制代码
def selection_sort(arr):
    # 遍历列表的每一个位置
    for i in range(len(arr)):
        # 假设当前位置 i 为最小元素的位置
        min_index = i
        # 从 i+1 位置开始找出剩余元素中最小的元素
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[min_index]:
                min_index = j
        # 交换当前位置 i 和最小元素的位置
        arr[i], arr[min_index] = arr[min_index], arr[i]
        print(f"第 {i + 1} 轮排序结果: {arr}")  # 打印每轮排序后的数组状态

# 测试
arr = [64, 25, 12, 22, 11]
print("原始数组:", arr)
selection_sort(arr)
print("排序后的数组:", arr)

理解

外层循环:控制排序的轮数

内层循环:找到未排序区域最小的元素

相关推荐
虾饺爱下棋2 分钟前
FCN语义分割算法原理与实战
人工智能·python·神经网络·算法
云手机掌柜1 小时前
从0到500账号管理:亚矩阵云手机多开组队与虚拟定位实战指南
数据结构·线性代数·网络安全·容器·智能手机·矩阵·云计算
Eloudy3 小时前
简明量子态密度矩阵理论知识点总结
算法·量子力学
点云SLAM3 小时前
Eigen 中矩阵的拼接(Concatenation)与 分块(Block Access)操作使用详解和示例演示
人工智能·线性代数·算法·矩阵·eigen数学工具库·矩阵分块操作·矩阵拼接操作
没书读了4 小时前
考研复习-数据结构-第八章-排序
数据结构
算法_小学生5 小时前
支持向量机(SVM)完整解析:原理 + 推导 + 核方法 + 实战
算法·机器学习·支持向量机
waveee1235 小时前
学习嵌入式的第三十四天-数据结构-(2025.7.29)数据库
数据结构·数据库·学习
iamlujingtao5 小时前
js多边形算法:获取多边形中心点,且必定在多边形内部
javascript·算法
算法_小学生5 小时前
逻辑回归(Logistic Regression)详解:从原理到实战一站式掌握
算法·机器学习·逻辑回归
DebugKitty6 小时前
C语言14-指针4-二维数组传参、指针数组传参、viod*指针
c语言·开发语言·算法·指针传参·void指针·数组指针传参