我正在努力实现一个Hoare分区到一个快速排序。我试图完全理解hoare分区,但这本书并没有解释所有的事情。我主要是想知道while TRUE部分是什么意思?这本书的摘录如下。如果我将while部分放在java中,我会使用什么?为什么?Hoare-Partition(A,p,r) i = p-1 while true j=
我对quicksort at 中的3路分区感兴趣,因为它使用该分区来解决荷兰国旗问题(相等数据)。根据维基百科:
在快速排序的早期版本中,分区的最左边元素通常被选择为pivot元素。不幸的是,这会导致已经排序的数组出现最坏的情况,这是一个相当常见的用例。通过为枢轴选择随机索引、选择分区的中间索引或(特别是较长的分区)为枢轴选择分区的第一个、中部和最后一个元素的中值(如Sedgewick推荐的那样)