我看到了关于选择排序算法的代码:
ls = [2, 5, 1, -9, 10, 13, 7, 2]
def selection_sort(ls):
for i in range(len(ls)):
imin = min(range(i,len(ls)), key = lambda x: ls[x])
ls[i], ls[imin] = ls[imin], ls[i]我知道有if块的典型的selection_sort,但是这个很难理解。我试着用所有可能的方法打印imin,结果是33337777,这对我来说毫无意义。我想我的问题是,我不知道这个具体的关键是如何工作的。有人对此有任何洞察力吗?
发布于 2022-08-18 12:20:46
函数声明
语句是函数定义,它接受一个参数,即list
def selection_sort(ls):循环初始化
定义了一个for-loop,它将从i = 0 to the len(ls)迭代列表。
for i in range(len(ls)):主逻辑
在for-loop内部,有2条语句
imin = min(range(i,len(ls)), key = lambda x: ls[x])上面的代码使用python的min函数,包含2个参数、一个迭代器和一个函数,从索引i到len(ls),从列表中找到最小值,并使用作为第二个参数传递的lambda函数返回项的索引。
ls[i], ls[imin] = ls[imin], ls[i]上面的代码负责将最小项与列表索引I处的项交换。
https://stackoverflow.com/questions/73402779
复制相似问题