Я изучаю быструю сортировку в java, в соответствии с материалом, который у меня есть. Наилучшим случаем является то, что ось является срединной, худший случай - когда одна сторона стержня всегда пуста.Как понять алгоритм быстрой сортировки
Для следующего кода, является "indexPartition" стержнем? Какие параметры вы добавляете в следующую функцию , чтобы она работала в худшем положении?
private void quickSortSegment(E[] list, int start, int end)
{
if (end-start>1)
{
int indexPartition = partition(list, start, end);
quickSortSegment(list, start, indexPartition);
quickSortSegment(list, indexPartition+1, end);
}
}
private int partition(E[] list, int start, int end)
{
E temp;
E partitionElement = list[start];
int leftIndex = start;
int rightIndex = end-1;
while (leftIndex<rightIndex)
{
while (list[leftIndex].compareTo(partitionElement) <= 0 && leftIndex<rightIndex)
{
leftIndex++;
}
while (list[rightIndex].compareTo(partitionElement) > 0)
{
rightIndex--;
}
if (leftIndex<rightIndex)
{
temp = list[leftIndex];
list[leftIndex] = list[rightIndex];
list[rightIndex] = temp;
}
}
list[start] = list[rightIndex];
list[rightIndex] = partitionElement;
return rightIndex;
}
HTTP : //en.wikipedia.org/wiki/File: Quicksort-example.gif –
http://stackoverflow.com/questions/4019528/quick-sort-worst-case – Damian0o
http://en.wikipedia.org/wiki /File:Sorting_quicksort_anim.gif – Ilya