0 / 0 / 0
Регистрация: 01.08.2014
Сообщений: 3
1

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

20.09.2014, 23:44. Показов 3345. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2014, 23:44
Ответы с готовыми решениями:

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

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

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

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

1
1362 / 999 / 316
Регистрация: 28.07.2012
Сообщений: 2,764
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2014, 01:23

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

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

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

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

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка)
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом...

Каким образом можно объективно определить, решение на каком языке будет эффективнее решать некоторую задачу?
Например: Взбрела в голову идея попробовать написать алгоритм сжатия, основанный на переборе цифр...


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

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

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