Python 中实现选择排序(python中的选择排序算法)

选择排序算法在每次迭代中从未排序的列表中找到最小的元素,并将该元素放在未排序列表的开头。也可以查找最大值,实现降序排序。

选择排序的执行过程

对于列表使用选择排序算法进行升序排序:

  1. 循环迭代列表,将第一个元素的索引号赋值给变量 min,假设第一个元素为最小值。
  2. 迭代其他元素,找到最小的元素,与第一个元素交换位置。这时列表的第一个元素确定。
  3. 继续迭代列表,将列表第二个元素的索引号赋值给变量 min。
  4. 迭代其他元素,找到最小的元素,与第二个元素交换位置。这时列表的第二个元素确定。
  5. 继续迭代,直到排序完成。

Python 中实现选择排序

def selection_sort(lst):
    n = len(lst)
    for i in range(n - 1):
        min = i
        for j in range(i + 1, n):
            if lst[j] < lst[min]:
                min = j
        lst[i], lst[min] = lst[min], lst[i]

该算法按升序对列表进行排序,让我们看看它是如何工作的。

变量 n 是列表中元素的个数。

外循环迭代整个列表,从 0 到 n-1 ,即第一个元素到倒数第二个元素,将迭代变量 i 赋值给 min,即记录第一个元素的索引号。

内循环使用迭代变量 j ,取值 i + 1 到 n,即内循环迭代其他元素。

如果找到一个比较小的元素,将其索引号 j 赋值给变量 min,内循环迭代完成后,变量 min 存储了其他元素最小值的索引号。

利用索引号,与第一个元素交换位置。整个列表的第一个元素位置确定。

用列表的第二个元素与剩余元素的最小值进行交换,继续迭代,直到排序完成。

示例:对列表 list1 = [6, 1, 7, 2, 3] 实现升序排序。

list1 = [6, 1, 7, 2, 3]
def selection_sort(lst):
    n = len(lst)
    for i in range(n - 1):
        min = i
        for j in range(i + 1, n):
            if lst[j] < lst[min]:
                min = j
        lst[i], lst[min] = lst[min], lst[i]
selection_sort(list1)
print(list1)
# 排序过程
原始列表:[6, 1, 7, 2, 3]
第一次迭代结果:[1, 6, 7, 2, 3]
第二次迭代结果:[1, 2, 7, 6, 3]
第三次迭代结果:[1, 2, 3, 6, 7]
第四次迭代结果:[1, 2, 3, 6, 7]

选择排序的时间复杂度为 O(n**2),这意味着,如果排序元素数量增加一倍,则执行算法所需的时间将增加四倍,因此,它是一种低效的排序算法。通常不如插入排序效率高,但更易于理解和实现。

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈。

相关文章

Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!

Python 3.14 重磅更新!UUIDv6/v7/v8 强势来袭,别再用 uuid4 () 啦! 为什么说 UUID 升级是 2025 年 Python 开发者的必学技能?在当今互联网应用中,UU...

Python学不会来打我(94)python序列的知识点总结

在Python中,序列(Sequence)是一种基础数据结构,具有以下核心特征和类型划分:#python##python自学##python教程#1. 序列的定义与特性定义:序列是一块可存放多个...

实现希尔排序——Python(希尔排序实现代码)

关于希尔排序希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序...

你应该知道的关于 Python 排序的 4 个技巧

介绍在本文中,你将了解一些你以前可能不知道的关于排序的技巧。目录Sorted() VS Sort() 用于列表、元组和字典根据你的标准排序对复杂对象的集合进行排序用内置函数attrgetter进行排序...

Python教程-列表排序(python中如何给列表排序)

作为软件开发者,我们总是努力编写干净、简洁、高效的代码。Python 是一种强大的编程语言,它有许多内置的函数和库。其中一个库是 "列表 "模块,它提供了强大的工具来管理 Python...