Algorithm 了解荷兰国旗计划 我在阅读,但是不理解C++代码实现中的低级>代码>和代码>高> /代码>参数在三分区> /Cuff>函数中。p>
如果我假设它们是要排序的数组的最小和最大元素,那么Algorithm 了解荷兰国旗计划 我在阅读,但是不理解C++代码实现中的低级>代码>和代码>高> /代码>参数在三分区> /Cuff>函数中。p>,algorithm,partitioning,Algorithm,Partitioning,如果我假设它们是要排序的数组的最小和最大元素,那么If和else If语句没有任何意义,因为(data[I]high)总是返回零 我错在哪里 }否则,如果(数据[i]>=high){显示您认为看到的可能不是文章中所写的。将低和高视为半开放范围中间分区中的值小于Lo> 在左分区中结束。中间分区将包含从“代码>低高< /代码>的值。最后,大于或等于高< /代码>的所有值在正确的分区中结束。 < P> 低< /代码>>和high是您为执行三向分区定义的值,即,要执行三向分区,您只需要两个值: [bot
If
和else If
语句没有任何意义,因为(data[I]
和(data[I]>high)
总是返回零
我错在哪里
}否则,如果(数据[i]>=high){
显示您认为看到的可能不是文章中所写的。将低和高视为半开放范围中间分区中的值小于Lo> 在左分区中结束。中间分区将包含从“代码>低
高< /代码>的值。最后,大于或等于<代码>高< /代码>的所有值在正确的分区中结束。 < P> <代码>低< /代码>>和high
是您为执行三向分区定义的值,即,要执行三向分区,您只需要两个值:
[bottom] <= low < [middle] < high <= [top]
正如算法所说,您:
- 交换底部上方的元素(即
p+1
),因为底部下方的所有内容都已检查,或者
- 交换顶部下方的元素(即
q-1
),因为顶部上方的所有内容都已检查,或者
- 将元素留在原处,因为它属于中间元素
你可以将[3,1,0,2]
、[6,4]
和[9,8,9]
分别作为底部、中间和顶部分区。感谢你的清晰解释。对于这一点(2,1,0,0,1,2,1,0,2),什么应该是低和高的?@abhi120:low=1和hi=2就可以了。我认为亚历山大的不等式应该是[bottom]data = [ 3, 1, 4, 9, 8, 2, 6, 9, 0 ]
low = 4
high = 8
[ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
p^ i^ q^
[ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
p^ i^ q^
[ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
p^ i^ q^
[ 3 , 1 , 4 , 9 , 8 , 2 , 6 , 9 , 0 ]
p^ i^ q^
[ 3 , 1 , 4 , 0 , 8 , 2 , 6 , 9 , 9 ]
p^ i^ q^
[ 3 , 1 , 0 , 4 , 8 , 2 , 6 , 9 , 9 ]
p^ i^ q^
[ 3 , 1 , 0 , 4 , 9 , 2 , 6 , 8 , 9 ]
p^ i^ q^
[ 3 , 1 , 0 , 4 , 6 , 2 , 9 , 8 , 9 ]
p^ i^ q^
[ 3 , 1 , 0 , 4 , 6 , 2 , 9 , 8 , 9 ]
p^ i^ q^
[ 3 , 1 , 0 , 2 , 6 , 4 , 9 , 8 , 9 ]
p^ iq^