我正在通过快速排序,无论我看到哪篇文章,我都会感到更加困惑。
1)这个实现真的很好http://gauss.ececs.uc.edu/Courses/C321/html/quicksort.java.html
但据我了解,每次通过后,枢轴索引都处于正确位置。
那么理想情况下,我们应该执行以下操作:
public static void Quicksort(int A[], int f, int l)
{
if (f >= l) return;
int pivot_index = partition(A, f, l);
Quicksort(A, f, pivot_index-1); //*** pivot_index-1
Quicksort(A, pivot_index+1, l);
}
但教程使用Quicksort(A, f, pivot_index); .
我 200% 确信进行更改“pivot_index-1”不会提高任何性能或降低复杂性;但只想让我的理解正确。
2)这里的实现有效;但它不会在每次传递时将枢轴元素放置在正确的位置。