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

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

20.09.2014, 23:44. Просмотров 1493. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2014, 23:44
Ответы с готовыми решениями:

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

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

Сортировка Слиянием vs Быстрая Сортировка - что лучше
Народ, помогите разобраться какой из методов сортировки лучше &quot;Сортировка Слиянием&quot; или &quot;Быстрая...

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

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

1
nonedark2008
1280 / 949 / 289
Регистрация: 28.07.2012
Сообщений: 2,620
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
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2014, 01:23

Сортировка слиянием. трехленточная сортировка. считывание из файла
Сделал только без считывания из файла, как это сделать. Нужна помощь. У меня считывается с клавы и...

Каким образом происходит залог сайта?
Добрый вечер Один человек дает мне кредит, но взамен требует залог сайта. (сайт раскручен в...

Каким образом при интегрировании происходит замена dx, например, на d(kx+b)
Подскажите, пожалуйста! Каким образом при интегрировании происходит замена dx, например, на...


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

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

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