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

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

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

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

18.12.2012, 22:54. Просмотров 757. Ответов 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;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 22:54     Сортировка слиянием
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
19.12.2012, 11:42     Сортировка слиянием #2
Цитата Сообщение от 123Unknown Посмотреть сообщение
Может кто-нибудь подскажет как можно это исправить ?
Освободите память после циклов.
C++
1
delete [] sorted;
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;
, но так выдавало ошибку
Yandex
Объявления
19.12.2012, 23:00     Сортировка слиянием
Ответ Создать тему
Опции темы

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