我在Python中有一个家庭作业,并且遇到了大脑冻结。所以我应该使用插入排序进行O(n2)练习。 例如,我有一个两个列表[]和[5,8,1,1],程序应该从一个列表中插入值到另一个列表,从第一个和正确的顺序删除到另一个列表: [] [5,8,1,1] = [5] [8,1,1] = [5,8] [1,1] = [1,5,8] [1] = [1,1, 5,8] []
我想出了一些东西,不知道我是否在正确的轨道上,但这似乎是最合理的。缩进是有序的,但复制代码在这里以某种方式搞砸了它。 P.S对于爱沙尼亚语言,对于用爱沙尼亚语编写代码是必须的。
def pisteMeetod2(t2ishulk):
tulemus = [] #new list
hulgacopy = t2ishulk[0:len(t2ishulk)] #main list
for el in t2ishulk: #going through first list
if not tulemus: #if list empty (which it at the beginning is) then from here
tulemus.append(el)
del hulgacopy[0]
else:
for elemendid in tulemus: #check if there is a lower element from new list
n = 0
if hulgacopy[0] <= tulemus[n]:
tulemus.insert(n-1,el)
del hulgacopy[0]
break
n = n + 1
所以现在我遇到了第二次循环的麻烦。在完成检查结果列表中名为“tulemus”的元素之后,如果找不到任何匹配,我应该如何继续我的代码,以便将“el”附加到tulemus中。
答案 0 :(得分:3)
您可以在内部else
循环中添加for
子句:
for elemendid in tulemus: #check if there is a lower element from new list
n = 0
if hulgacopy[0] <= tulemus[n]:
tulemus.insert(n, el)
del hulgacopy[0]
break
n = n + 1
else:
tulemus.append(el)
del hulgacopy[0]
如果使用break
未终止循环,则会执行其正文。您可以在Python的official tutorial中阅读有关循环的else
子句的更多信息。
另请注意,如果在迭代时找到插入点,则应使用tulemus.insert(n, el)
而不是tulemus.insert(n-1, el)
来插入当前元素。否则,当n == 0
时,您将最终插入列表的末尾(索引-1)。