Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
#1

Сортировка массива. - C++

16.06.2009, 12:25. Просмотров 810. Ответов 3
Метки нет (Все метки)

Имеется одномерный массив длиной n. Упорядочить массив методом выбора таким образом, чтобы элементы, находящиеся на четных позициях располагались по убыванию, а на нечетных позициях – по возрастанию. Я так думаю, что надо сначала отсортировать методом выбора, а затем показать четные и нечетные индексы. Как это сделать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    const int n = 10;
    int a[n] = {9, 6, 1, 16, 11, 14, 3, 19, 7, 4};
    int i, j, tmp = 0;   
  
    for(i = 0; i < n; i++)
    {
          for(j = 0; j < n - i - 1; j++)
          {
                if(a[j] > a[j + 1])
                {
                        tmp = a[j];
                        a[j] = a[j + 1];                        
                        a[j + 1] = tmp;
                }
          }
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2009, 12:25     Сортировка массива.
Посмотрите здесь:

Сортировка массива. C++
С++ Сортировка массива C++
Сортировка массива C++
C++ Сортировка массива
Сортировка массива А-Я C++
Сортировка массива C++
C++ Сортировка массива
C++ Сортировка массива
Сортировка массива C++
Сортировка массива C++
Сортировка массива O(m+n) C++
Сортировка массива C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт CАвтор FAQ
17385 / 5623 / 350
Регистрация: 30.03.2009
Сообщений: 15,402
Записей в блоге: 26
16.06.2009, 12:33     Сортировка массива. #2
У тебя сейчас идёт полная сортировка по всему массиву. А ты сделай две отдельные сортировки - одна только по чётным позициям, другая только по нечётным. Вот так делается сортировка только по чётным позициям:

C
1
2
3
4
5
    for(i = 0; i < n; i+=2)
    {
          for(j = 0; j < n - i - 1; j+=2)
          {
                if(a[j] > a[j + 2])
Для нечётных позиций начальные значение i и j должны равняться единице (а всё остальное не меняется)

Добавлено через 1 минуту 44 секунды
Правда "if(a[j] > a[j + 1])" - неправильно. Нужно сравнивать элементы a[i] и a[j]. Да и оба цикла написаны, вроде бы как неправильно. Ты сначала научись делать просто сортировку всего массива, а потом переделай её в две сортировки по чётным и нечётным элементам
grrrrr
45 / 45 / 7
Регистрация: 21.04.2009
Сообщений: 265
16.06.2009, 12:46  [ТС]     Сортировка массива. #3
Evg, Учусь! Кстати, алгоритм работает правильно. Я думал так, что сортируются весь массив, а уж потом индексы показывать.
Evg
Эксперт CАвтор FAQ
17385 / 5623 / 350
Регистрация: 30.03.2009
Сообщений: 15,402
Записей в блоге: 26
16.06.2009, 12:49     Сортировка массива. #4
Цитата Сообщение от grrrrr Посмотреть сообщение
Кстати, алгоритм работает правильно
Ога, понял, что это пузырёк. Что-то с начала показалось подозрительным. Ну значит делай так, как я писал. Сам понимаешь, что при такой постановке задачи вариантов ответа (не говоря уж о вариантах решения) - море
Yandex
Объявления
16.06.2009, 12:49     Сортировка массива.
Ответ Создать тему
Опции темы

Текущее время: 13:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru