python中的选择排序(选择排序python版)
python中的选择排序(选择排序python版)# import random def my_choice(my_list): n = len(my_list) for i in range(n - 1): min_value_index = i for j in range(i n): if my_list[j] < my_list[min_value_index]: min_value_index = j my_list[i] my_list[min_value_index] = my_list[min_value_index] my_list[i] if __name__ == "__main__": # elements_list = [random.randint(
上次介绍了冒泡排序,本次介绍另一种与冒泡排序类似的选择排序。其核心原理是随机给定一个列表中的n个数字 执行n-1轮比较和交换 每轮选择其中最小的数字与本轮中最左侧第一个数字进行交换。具体实现的方式是设置一个名为min_value_index的变量 在每轮比较的时候用于存储该轮比较过程中最小值的位置。待该轮比较结束后索引该位置上的值进行交换。
第1轮排序,在第1到第n个元素(共n个元素)中找出最小的元素与第1个元素进行位置交换。
第2轮排序,在第2到第n个元素(共n-1个元素)中找出最小的元素与第2个元素进行位置交换。
第3轮排序,在第3到第n个元素(共n-2个元素)中找出最小的元素与第3个元素进行位置交换。
......
第n-1轮排序,在第n-1到第n个元素(共2个元素)中找出最小的元素与第n-1个元素进行位置交换。
排序结束。
以下为实现的代码:
# import random
def my_choice(my_list):
n = len(my_list)
for i in range(n - 1):
min_value_index = i
for j in range(i n):
if my_list[j] < my_list[min_value_index]:
min_value_index = j
my_list[i] my_list[min_value_index] = my_list[min_value_index] my_list[i]
if __name__ == "__main__":
# elements_list = [random.randint(1 100) for i in range(10)]
elements_list = [32 33 25 89 8 94 81 21 71 58]
print("排序之前: " elements_list)
my_choice(elements_list)
print("排序之后: " elements_list)
不足之处请批评指正,欢迎讨论~~~