Быстрая Сортировка(сортировка Хоара).сортировка Фрагмента Массива[c++]

  • Автор темы -
  • Дата начала
Статус
Закрыто для дальнейших ответов.

Гость
#1
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным элементом. Не могу понять как устоновить границы от 1-го и до последнего отрицательного.
Подскажите как сделать
C++:
void Sort (int x[], int n, int L, int R)
{
int i=L,j=R,w;
int a=x[(L+R)/2];
do {
while (x[i]<a) i++;
while (x[j]>a) j--;
if (i<=j)
{
w=x[i];
x[i]=x[j];
x[j]=w;
i++; j--;
}
}
while (i<=j);
if (L<j) 
Sort (x,n,L,j);
if (i<R)
Sort (x,n,i,R);
}

void FastSort (int x[], int n) 
{
Sort (x,n,0,n-1);
}
 
R

rrrFer

Гость
#2
Код:
int L, R, i;
L = R = -1;
for( i = 0; i < n; i ++ ) {
if( a[ i ] >= 0 )
continue;
if( L < 0 )
L = i;
R = i;
}
//L = индекс первого отрицательного, R - последнего. Их и передавай в функцию Sort.
Добавлено: не проверял, но, даже если не работает - то суть понятна должна быть )
 
Статус
Закрыто для дальнейших ответов.