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

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

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

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

18.12.2012, 22:54. Просмотров 820. Ответов 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++
Привет всем, пытаюсь сделать сортировку 100 чисел слиянием. Выдается ошибка на функции delete :error type ‘int’ argument given to ‘delete’...

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

Сортировка слиянием? - C++
Условие задачи &quot;Элементы файлов f1 и f2 упорядочены по не убыванию. Объединить эти элементы в один файл f3, также упорядоченный по не...

Сортировка слиянием в С++ - C++
Вот такое задание: Составить программу реализации указанного метода сортировки и иллюстрации его выполнения. В программе предусмотреть...

Сортировка слиянием - C++
Даны два текстовых файла f1.txt и f2.txt, состоящие из целых чисел, которые упорядочены по неубыванию. Числа лежат в диапозоне от 0 до 9....

Сортировка слиянием - C++
Нужно сделать счётчик который будет считать количество приравниваний в программе. Я что-то никак не могу сообразить( #include&lt;stdio.h&gt;...

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

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

Сортировка слиянием - C++
Нужен самый примитивный рабочий код желательно с комментарием. Спасибо

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13052 / 7315 / 814
Регистрация: 27.09.2012
Сообщений: 18,052
Записей в блоге: 3
Завершенные тесты: 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;
, но так выдавало ошибку
Ответ Создать тему
Опции темы

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