Алгоритм Сортировки Массива

Тема в разделе "C/C++/C#", создана пользователем freshcot, 16 июн 2012.

  1. freshcot

    freshcot Гость

    Здравствуйте. Помогите решить задачу по С++.
    Нужно отсортировать элементы массива по особенному.
    Например, есть э-ты массива: 1.2324 -9.432 1.0237 0.12414
    Нужно, чтобы при сортировке вышло: -9.432 0.12414 1.2324 1.0237
    То есть, чтобы сначала шли все, меньше единицы (но в том же порядке, что были раньше!) а потом все остальные (в том же порядке!)
    И ещё, реализована сортировка должна быть таким способом:

    Код (C++):
    // определение функции упорядочения массива по убыванию
    void F_LgToSm(double ar_in[], const int n_dim)
    {
    for (int j=0; j < n_dim; j++)
    {
    // выбор наибольшего среди элементов с номерами j, j+1, ..., n_dim
    int n_mx = j; // инициализация - принимаем за наибольший j-й элемент
    for (int i = j + 1; i < n_dim; i++)
    if (ar_in[i] > ar_in[n_mx])
    n_mx = i;
    //      else continue; // случай, когда j-ый оказался наибольшим

    // обмен элементов с номерами j и n_mx
    double aux = ar_in[j];  // переменная aux - для промежуточных значений
    ar_in[j] = ar_in[n_mx];
    ar_in[n_mx] = aux;
    }
    }
    Т.е., использовать можно только один массив.
     
  2. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    твой пример противоречит твоему же условию
     
  3. freshcot

    freshcot Гость

    Я про принцип. То, что там сортировка по убыванию - это неважно.
     
  4. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    по твоему условию должно быть так
    -9.432 1.2324 1.0237 0.12414
    но не как не так
     
  5. freshcot

    freshcot Гость

    0.12414 меньше 1, по условию оно должно отсортироваться в начало. Т.е. -9.432 0.12414 1.2324 1.0237
     
Загрузка...

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