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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
-=VenD=-
0 / 0 / 0
Регистрация: 14.03.2010
Сообщений: 21
#1

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

20.12.2010, 20:29. Просмотров 1138. Ответов 3
Метки нет (Все метки)

ПОЖАЛУЙСТА ПОМОГИТЕ НАПИСАТЬ ПРОГу:

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

Отсортировать одномерный целочисленный массив сортировкой Шелла - C++
Требуется отсортировать массив сортировкой Шелла. Считывать массив нужно из текстового файла, в котором в одну строку записаны через пробел...

Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив - C++
Целочисленный массив с размером 4*4 .Написать прогу , формирующую одномерный массив. #include <iostream> using namespace std; ...

Преобразовать двумерный целочисленный массив в одномерный - C++
С++ Написать программу, преобразующую двумерный целочисленный массив в одномерный, "развернув" его по столбцам. Для работы с...

Целочисленный одномерный массив, сортировка по убыванию и возрастанию - C++
Написать программу, позволяющую сортировать введенный пользовате-лем целочисленный одномерный массив по убыванию или по возраста-нию (в...

Создать динамический целочисленный массив, и отсортировать его методом вставок - C++
Помогите пожалуйста создать динамический целочисленный массив. Размер массива вводится с клавиатуры. Массив заполняется случайными числами,...

Задан целочисленный массив размера N. Отсортировать серии в массиве в порядке убывания их длины - C++
В общем, есть две задачи, ух на какую же веселую и ни черта не понятную для меня тему. 1. Задан целочисленный массив размера N....

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
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
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
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;
  }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2010, 22:07
Привет! Вот еще темы с ответами:

Отсортировать заданный целочисленный массив при помощи сортировки выбором (selection sort) - C++
Напишите пожалуста простенькие программы на подобие этой: #include &lt;iostream&gt; using namespace std; void main () { const int...

Дан одномерный целочисленный массив. Определить элемент с наибольшим количеством делителей - C++
Ребят, задача такая: &quot;Дан одномерный целочисленный массив. Определить элемент с наибольшим количеством делителей.&quot; Помогите плиз...

С++ Отсортировать целочисленный массив по возрастанию суммы двух последних цифр в записи его элементов - C++
Отсортировать целочисленный массив по возрастанию суммы двух последних цифр в записи его элементов

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька - C++
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.12.2010, 22:07
Ответ Создать тему
Опции темы

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