Python中实现选择排序

云课堂学Python 2024-04-13 06:06:44

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

选择排序的执行过程

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

循环迭代列表,将第一个元素的索引号赋值给变量 min,假设第一个元素为最小值。迭代其他元素,找到最小的元素,与第一个元素交换位置。这时列表的第一个元素确定。继续迭代列表,将列表第二个元素的索引号赋值给变量 min。迭代其他元素,找到最小的元素,与第二个元素交换位置。这时列表的第二个元素确定。继续迭代,直到排序完成。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),这意味着,如果排序元素数量增加一倍,则执行算法所需的时间将增加四倍,因此,它是一种低效的排序算法。通常不如插入排序效率高,但更易于理解和实现。

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

0 阅读:0