擅长:python、mysql、java
<p>好的,我对这里可能有错误的地方有一些想法,但是你并没有给出太多你需要什么帮助的指示,所以首先我想为你指出正确的方向,让你自己来解决这个问题</p>
<p>在编写任何代码进入<code>merge4</code>和<code>merge_sort_4</code>之前,您能描述一下它们的先决条件和后决条件吗?也就是说,在调用其中一个参数之前,对于列表的状态和传递给它的参数,您要求什么是true?它的工作是什么?当它完成时,它保证做什么?<code>start</code>可以有什么值<code>end</code>可以有什么值</p>
<p>我希望您能够描述一些约束条件,例如<code>0 <= start <= end < len(lst)</code>用于调用<code>merge_sort_4</code>和<code>0 <= start <= q1 <= q2 <= q3 <= end <= len(lst)</code>用于调用<code>merge4</code>,并且<code>merge4</code>需要对四个子列表进行排序,并保证从<code>list</code>索引<code>start</code>到<code>end</code>的整个范围都是排序的</p>
<p>现在,这些事情真的是真的吗?你能用示例值浏览一下代码,看看会发生什么吗?您能否将断言添加到算法中,以捕获其中一个断言第一次不正确的情况?您能否在小块测试数据上分别测试算法片段,以查看它们的行为是否符合您的预期</p>
<p>试着看看你是否能自己找到答案,如果不能,我建议你开始找一个地方</p>
<p></p>
<p></p>
<p>我希望<code>quarter1</code>、<code>quarter2</code>和<code>quarter3</code>都应该在<code>start</code>到<code>end</code>的范围内,但我认为你的计算可能没有达到你的预期。试试<code>start</code>和<code>end</code>的不同值,看看你是否对结果感到惊讶</p>