Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
123Unknown
1 / 1 / 0
Регистрация: 26.11.2012
Сообщений: 31
#1

Сортировка слиянием - C++

18.12.2012, 22:54. Просмотров 942. Ответов 2
Метки нет (Все метки)

На лабороторной задали написать сортировку массива слиянием, рабочую версию реализовать удалось, только вот она жрёт лишнюю память, которая висит занятой после выхода из сортировки, это происходит из-за постоянного выделения памяти под new_num. Может кто-нибудь подскажет как можно это исправить ?
Вот сам код
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
void merge_sort(int*& left, int n)
{
    if (n>1)
    {
        int split = n/2;
        int* right = left + split;
        merge_sort(left, split);
        merge_sort(right, n-split);
        int* new_num = new int[n];
        int* sorted = new_num;
        int* l_end = left + split - 1;
        int* r_end = right + n - split - 1;
        while (left <= l_end && right <= r_end)
        {
            if (*left<=*(right))
            {
                *new_num = *left;
                new_num++;
                left++;
            }
            else
 
            {
                *new_num = *right;
                new_num++;
                right++;
            }
        }
        while (left <= l_end)
        {
            *new_num = *left;
            left++;
            new_num++;
        }
        while (right <= r_end)
        {
            *new_num = *right;
            right++;
            new_num++;
        }
        left = sorted;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 22:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортировка слиянием (C++):

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? - C++
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...

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

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

Сортировка слиянием - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; void Merge_Sort(int * a,int left, int right) { if (left &lt;...

Сортировка слиянием - C++
Требуется отсортировать слиянием массив структур. По одному из элемерту структуры. Вторая ночь без сна, не могу понять даже реализацию...

Сортировка слиянием - C++
void merg1(int* mas, int p, int q, int r) { int size1 = p + q; int size2 = r - q + 1; int *mas1 = new int; int *mas2 = new...

2
Croessmah
Ушел
13777 / 8027 / 926
Регистрация: 27.09.2012
Сообщений: 19,777
Записей в блоге: 3
Завершенные тесты: 1
19.12.2012, 11:42 #2
Цитата Сообщение от 123Unknown Посмотреть сообщение
Может кто-нибудь подскажет как можно это исправить ?
Освободите память после циклов.
C++
1
delete [] sorted;
0
123Unknown
1 / 1 / 0
Регистрация: 26.11.2012
Сообщений: 31
19.12.2012, 23:00  [ТС] #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Освободите память после циклов.
C++
1
delete [] sorted;
Разве после удаления sorted, мой отсортированный массив не канет в лету(ведь именно sotred указывает на отсортированный массив)??, и разве не нужно удалять первоначальный left??, я пробовал так:
В начале создавал:
C++
1
 int* temp = left
Затем после циклов писал:
C++
1
delete[] temp;
, но так выдавало ошибку
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2012, 23:00
Привет! Вот еще темы с ответами:

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

сортировка слиянием - C++
программа должна выполнять сортировку строк слиянием с использованием указателей. #include&lt;iostream&gt; #include&lt;string.h&gt; ...

Сортировка слиянием - C++
Нужен алгоритм сортировки массива слиянием. Массив из 1000 чисел, введенных рандомно. На visual c++ заранее большое спасибо.

Сортировка слиянием - C++
Привет всем, пытаюсь сделать сортировку 100 чисел слиянием. Выдается ошибка на функции delete :error type ‘int’ argument given to ‘delete’...


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

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

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