我需要优化我的排序(合并排序),这样对于大小为10^6的列表,将在不到100秒内进行排序。目前我最好的时间是105秒,我想不出一种方法来让这段代码更优化
def my_sort(lst):
if len(lst) > 1:
puolivali = len(lst) // 2
vas = lst[:puolivali]
oik = lst[puolivali:]
vas = my_sort(vas)
oik = my_sort(oik)
lst = []
while len(vas) > 0 and len(oik) > 0:
if vas[0] < oik[0]:
lst.append(vas[0])
vas.pop(0)
else:
lst.append(oik[0])
oik.pop(0)
for i in vas:
lst.append(i)
for i in oik:
lst.append(i)
return lst
.pop(0)
是主要的性能杀手,因为它转移了所有后续元素。请改用移动索引:或作为一个完整的功能:
相关问题 更多 >
编程相关推荐