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

Отсортировать целочисленный одномерный массив - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
-=VenD=-
0 / 0 / 0
Регистрация: 14.03.2010
Сообщений: 21
20.12.2010, 20:29     Отсортировать целочисленный одномерный массив #1
ПОЖАЛУЙСТА ПОМОГИТЕ НАПИСАТЬ ПРОГу:

2) Написать программу, позволяющую сортировать введенный пользовате-лем целочисленный одномерный массив по убыванию или по возраста-нию (в зависимости от выбора пользователя). Сортировку по убыванию необходимо реализовать методом пузырька, а сортировку по возрастанию – методом выбора. Указанные виды сортировок нужно оформить в виде отдельных функций. Программа должна позволять работать столько раз, сколько угодно пользователю.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2010, 20:29     Отсортировать целочисленный одномерный массив
Посмотрите здесь:

C++ Найти номер последнего максимального элемента массива среди положительных
C++ Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины
C++ Преобразовать двумерный целочисленный массив в одномерный
C++ Определить максимальную разницу между двумя соседними элементами массива
Создать динамический целочисленный массив, и отсортировать его методом вставок C++
Целочисленный одномерный массив, сортировка по убыванию и возрастанию C++
Определить количество элементов массива, которые меньше предыдущего и меньше последующего C++
C++ Отсортировать одномерный целочисленный массив сортировкой Шелла

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
20.12.2010, 20:30     Отсортировать целочисленный одномерный массив #2
-=VenD=-, Алгоритмы сортировок
-=VenD=-
0 / 0 / 0
Регистрация: 14.03.2010
Сообщений: 21
20.12.2010, 21:48  [ТС]     Отсортировать целочисленный одномерный массив #3
Сортировка выбором

Идея метода состоит в том, чтобы создавать отсортированную последовательность путем присоединения к ней одного элемента за другим в правильном порядке.Код C++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<class T>
void selectSort(T a[], long size) {
long i, j, k;
T x;
 
for( i=0; i < size; i++) { // i - номер текущего шага
k=i; x=a[i];
for( j=i+1; j < size; j++) // цикл выбора наименьшего элемента
if ( a[j] < x ) {
k=j; x=a[j]; // k - индекс наименьшего элемента
}
a[k] = a[i]; a[i] = x; // меняем местами наименьший с a[i]
}
}
Если входная последовательность почти упорядочена, то сравнений будет столько же, значит алгоритм ведет себя неестественно.

Сортировка пузырьком

Идея метода: шаг сортировки состоит в проходе снизу вверх по массиву. По пути просматриваются пары соседних элементов. Если элементы некоторой пары находятся в неправильном порядке, то меняем их местами.Код C++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template<class T>
void bubbleSort(T a[], long size) {
  long i, j;
  T x;
 
  for( i=0; i < size; i++) {            // i - номер прохода
    for( j = size-1; j > i; j-- ) {     // внутренний цикл прохода
      if ( a[j-1] > a[j] ) {
      x=a[j-1]; a[j-1]=a[j]; a[j]=x;
    }
  }
}
}


Дополнительная память, очевидно, не требуется. Поведение усовершенствованного (но не начального) метода довольно естественное, почти отсортированный массив будет отсортирован намного быстрее случайного. Сортировка пузырьком устойчива, однако шейкер-сортировка утрачивает это качество.
На практике метод пузырька, даже с улучшениями, работает слишком медленно. А потому - почти не применяется.


Помогите это реализовать!
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
20.12.2010, 22:07     Отсортировать целочисленный одномерный массив #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Пузирьковая
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void bubble_sort(int *Arr, int n)
{
    for(int i = n - 1; i >= 1; --i)
    {
        for(int j = 0; j < i; ++j)
        {
            if(Arr[j] > Arr[j+1])
            {
                int temp = Arr[j];
                Arr[j] = Arr[j+1];
                Arr[j+1] = temp;
            }
        }
    }
}
Выбором
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void selectSort(int *a, int size)
 {
  long i, j, k;
  int x;
 
  for( i=0; i < size; i++)
   {
    k=i; x=a[i];
 
    for( j=i+1; j < size; j++)
      if (  a[j] < x )
      {
        k=j; x=a[j];
      }
 
    a[k] = a[i]; a[i] = x;
  }
}
Yandex
Объявления
20.12.2010, 22:07     Отсортировать целочисленный одномерный массив
Ответ Создать тему
Опции темы

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