选择排序

🎉摘要:Python 是一门解释型、面向对象、动态类型的高级编程语言,由荷兰程序员 Guido van Rossum 于 1991 年发布,核心设计理念是优雅、明确、简单。

选择排序(Selection Sort) 是一种简单直观的原地比较排序算法,思路非常好理解,也是学习排序算法的入门经典。

其基本思想是,每次从未排序部分里选出最小(或最大)的元素,放到已排序部分的末尾。

排序的整个过程可以分成两步重复:

(1)在未排序区间找到最小元素

(2)把它和未排序区间的第一个元素交换

这样每一轮都会确定一个元素的最终位置。


假设有数组:[5, 2, 9, 1, 5, 6]

第 1 轮:找最小 1 → 和第 1 位交换

[1, 2, 9, 5, 5, 6]

第 2 轮:在后面找最小 2 → 不动

第 3 轮:在后面找最小 5 → 和第 3 位交换

[1, 2, 5, 5, 9, 6]

第 4 轮:后面最小是 5 → 不动

第 5 轮:后面最小是 6 → 和 9 交换

[1, 2, 5, 5, 6, 9]


示例代码:

def selection_sort(arr):
    # 复制列表,不修改原数组
    arr = arr.copy()
    n = len(arr)

    # 外层循环:控制已排序边界,i 是当前要放最小值的位置
    for i in range(n - 1):
        # 假设当前 i 位置是最小值的下标
        min_index = i

        # 内层循环:在 i 之后找真正的最小值下标
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j

        # 找到最小值后,交换到 i 位置
        arr[i], arr[min_index] = arr[min_index], arr[i]

    return arr


if __name__ == '__main__':
    nums = [5, 2, 9, 1, 5, 6]
    print("原始数组:", nums)
    print("选择排序后:", selection_sort(nums))

运行结果:

原始数组: [5, 2, 9, 1, 5, 6]
选择排序后: [1, 2, 5, 5, 6, 9]

  





说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号