Я выполнил быструю сортировку, выбрав первый элемент в качестве точки поворота. он отлично работает для общих тестовых примеров, но рассмотрим случай, когда массив отсортирован по обратному адресу, например, 5 4 3 2 1. Я понимаю, где он бросает ошибку времени выполнения. но я не могу исправить это правильно. Является ли реализация для первого элемента правильной? Пожалуйста, предложите изменения.Быстрая сортировка с использованием первого элемента в виде сводной таблицы
public static void quicksort(int low,int high)
{
if(low<high)
{
int temp=0;
int pivot=a[low];
int large_index=low+1;
int small_index=high;
while(large_index<=small_index)
{
while(a[small_index]>pivot)
small_index--;
while(a[large_index]<pivot)
large_index++;
if(large_index<=small_index)
{
temp = a[large_index];
a[large_index]= a[small_index];
a[small_index]= temp;
large_index++;
small_index--;
}
}
temp = a[small_index];
a[small_index]= a[low];
a[low]= temp;
quicksort(low,small_index-1);
quicksort(small_index+1,high);
}
}
возможно попробуйте использовать ваш отладчик? –
По крайней мере, предоставить стек. –
Please indent ... –