Python书籍问题中EPI中的荷兰国旗问题

2024-06-25 22:51:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读这本书。在第40页,我很难理解以下内容:

"Generalizing, suppose A = (0, 1, 2, 0, 2, 1, 1), and the pivot index is 3. Then A[3] = 0, so i) (0, 0, 1, 2, 2, 1, 1) is a valid partitioning. For the same array, if the pivot index is 2, then A[2] = 2, so the arrays ii) (0,1,0,1,1,2,2) as well as iii) (0,0,1,1,1,2,2) are valid partitionings."

要求是将数组A和索引i放入A中,并重新排列元素,使小于A[i](枢轴)的所有元素首先出现,然后是等于枢轴的元素,然后是大于枢轴的元素

我的问题是:

  1. 为什么i)(0,0,1,2,2,1,1)是有效的分区?我不明白为什么A[4]和A[5]都是1并且小于新的A[3],即2,这是可以接受的。这个定义是不是“小于,在它的左边;等于,然后大于”

  2. 对于ii)(0,1,0,1,1,2,2),为什么[2]从2变为0?A[2]在原来的A中,它的左元素不是已经少了吗

谢谢


Tags: andthe元素indexsoisasii