擅长:python、mysql、java
<p>问题1:<em>在Python中对数组进行切片包括最后一个元素,对吗?</em></p>
<p>不,像范围函数Python切片不包括最后一个元素。你知道吗</p>
<pre><code>> a=[1,2,3,4,5]
> a[1:4]
[2, 3, 4]
</code></pre>
<p>问题2:关于下面的片段。你知道吗</p>
<pre><code> L = x[first:middle+1]
R = x[middle+1:last+1]
L.append(999999999)
R.append(999999999)
</code></pre>
<p>如果不将这些大的数字追加到列表中,您的合并代码可能与下面的代码有所不同。你知道吗</p>
<pre><code> # Copy data to temp arrays L[] and R[]
while i < len(L) and j < len(R):
if L[i] <= R[j]:
x[k] = L[i]
i += 1
else:
x[k] = R[j]
j += 1
# Checking if any element was left
while i < len(L):
x[k] = L[i]
i+=1
k+=1
while j < len(R):
x[k] = R[j]
j+=1
k+=1
</code></pre>
<p>正如@Cedced\u Bro在评论部分指出的那样,那些最大的数字被用来知道一方的终点已经到达。
如果您观察上面的代码片段,如果一个列表中的数字用完了,那么理想情况下,我们会退出for循环,并在temp数组中插入其他列表的剩余元素(如果有的话)。你知道吗</p>
<p>附加这些大的数字是避免这两个for循环的智能方法。但它有一些不必要的成本,将999999999与其他列表中的剩余元素进行比较。你知道吗</p>