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

Тема в разделе "C/C++/C#", создана пользователем -, 20 апр 2012.

Статус темы:
Закрыта.
  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);
    }
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    Код (Text):
    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.
    Добавлено: не проверял, но, даже если не работает - то суть понятна должна быть )
     
Загрузка...
Похожие Темы - Быстрая Сортировка(сортировка Хоара)
  1. Seriy1994
    Ответов:
    1
    Просмотров:
    1.367
  2. Dock1100
    Ответов:
    6
    Просмотров:
    5.129
Статус темы:
Закрыта.

Поделиться этой страницей