如何解决插入/选择在一行python中排序
在python中编写插入/选择排序的最佳方法是使用列表推导? 我知道这行得通 选择:
def selection(l):
for i in range(0,len(l)):
min_idx = i
for j in range(i+1,len(l)):
if l[min_idx] > l[j]:
min_idx = j
l[i],l[min_idx] = l[min_idx],l[i]
l = [5,1,2,3,4]
selection(l)
Python方式?
解决方法
您可以尝试缩短最小元素搜索:
def selection(l):
for i in range(0,len(l)-1):
min_idx = l.index(min(l[i:]),i)
l[i],l[min_idx] = l[min_idx],l[I]
或具有恒定额外空间(感谢@ kaya3)的替代变体:
def selection(l):
for i in range(0,len(l)-1):
min_idx = min(range(i,len(l)),key=l.__getitem__)
l[i],l[i]
或单行解决方案(非最佳解决方案-可能会占用一些额外空间,而且弹出操作很繁琐):
l = [l.pop(l.index(min(l))) for _ in range(len(l))]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。