Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
igoreshka3333
0 / 0 / 0
Регистрация: 01.08.2014
Сообщений: 3
1

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?

20.09.2014, 23:44. Просмотров 1083. Ответов 1
Метки нет (Все метки)

Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <iostream>
using namespace std;
 
void Merge(int *A, int first, int last)
{
  int middle, start, final, j;
  int *mas=new int[100];
  middle=(first+last)/2;
  start=first;
  final=middle+1;
  for(j=first; j<=last; j++)
  if ((start<=middle) && ((final>last) || (A[start]<A[final])))
  {
    mas[j]=A[start];
    start++;
  }
  else
  {
    mas[j]=A[final];
    final++;
  }
  for (j=first; j<=last; j++) A[j]=mas[j];
  delete[]mas;
};
///////////////////////////////////////////////////////////////
 
void MergeSort(int *A, int first, int last)
{
  if (first<last)
  {
    MergeSort(A, first, (first+last)/2);
    MergeSort(A, (first+last)/2+1, last);
    Merge(A, first, last);
  }
};
 
//////////////////////////////////////////////////////////////////
void main()
{
 int i, n;
 int *A=new int[100];
 cout<<"Razmer > "; cin>>n;
 for (i=1; i<=n; i++)
 { cout<<i<<" element > "; cin>>A[i];}
 MergeSort(A, 1, n);
 cout<<"Otsortirovannyi spisok: ";
 for (i=1; i<=n; i++) cout<<A[i]<<" ";
 delete []A;
 system("pause>>void");
}
Поправте, если не прав:
1) Функция MergeSort разбивает массив на подмассивы и сортирует (только как - не пойму);
2) Функция Merge исключительно сливает подмассивы;
Заранее благодарен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2014, 23:44
Ответы с готовыми решениями:

Что происходит в куске кода?
Есть класс class Figure { public: virtual ~Figure() {} //деструктор класса virtual void...

Что происходит в заданном куске кода?
Здравствуйте, просто объясните пожалуйста этот кусок кода, что тут происходит. Это алгоритм...

2 сортировки: пирамидальная сортировка и сортировка слиянием
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель...

Шейкерная сортировка + сортировка слиянием
вот часть когда,которая выполняет шейкерную сортировку : для символьного и целочисленого массива ....

На каком участке кода происходит вызов функции
Привет всем! помогите розобратся, в каком месте(main) сдесь вызов функции( чтобы показать на блок...

1
nonedark2008
1063 / 794 / 224
Регистрация: 28.07.2012
Сообщений: 2,213
21.09.2014, 01:23 2
Цитата Сообщение от igoreshka3333 Посмотреть сообщение
Функция Merge исключительно сливает подмассивы;
Она сливает два отсортированных подмассива в один отсортированный.
Лоигка проста: исходный массив разбивается пополам, каждая из половинок сортируется тем же алгоритмом, а затем они сливаются.
Когда длина текущего подмассива становится равна 1, то можно считать, что такой массив уже отсортирован и его можно слить с другим таким подмассивом...

Добавлено через 1 минуту
Цитата Сообщение от igoreshka3333 Посмотреть сообщение
MergeSort(A, first, (first+last)/2); MergeSort(A, (first+last)/2+1, last); Merge(A, first, last);
Считай тут и написано:
1) Отсортируй левую половину
2) Затем правую
3) Слей их вместе
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2014, 01:23

Сортировка слиянием С++
Помогите пжлст написать программу со слиянием. Например вводим массивы A=1 2 3 и B= 4 5 6 и...

Сортировка слиянием
Требуется отсортировать слиянием массив структур. По одному из элемерту структуры. Вторая ночь без...

Сортировка слиянием
Нужен алгоритм сортировки массива слиянием. Массив из 1000 чисел, введенных рандомно. На visual...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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