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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Целочисленное деление с++ http://www.cyberforum.ru/cpp-beginners/thread737537.html
Разделить количество компьютеров между тремя классами так , чтобы их количество было приблизительно одинаковым.
C++ Написать программу с функцией для обмена строк двумерного массива, отсортировать массив Написать программу с функцией для обмена строк двумерного массива с ее помощью отсортировать массив по элементам третьего столбца. http://www.cyberforum.ru/cpp-beginners/thread737531.html
C++ Составить блок-схему (выводит элемент массива x, значение которого ближе всего к значению среднего арифметического)
Помогите , пожалуйста //--------------------------------------------------------------------------- #pragma hdrstop ...
C++ Необходимо исправить программу! Тема массивы
#include <iostream> #include <StdAfx.h> using namespace std; int main() { setlocale ( LC_ALL, "Rus" ); int n = 0; int i, l, fl; int sum = 0; // Сумма...
C++ Программирование шаблона классов http://www.cyberforum.ru/cpp-beginners/thread737511.html
Дано: число N и последовательность a1, a2, … aN Создать шаблон класса, порождающий динамические одномерные массивы с элементами различных типов (вещественные, целочисленные, символьные и т.д.). Тип...
C++ Наследование классов, механизм виртуальных функций Общая постановка. Программа должна содержать: • базовый класс Х, включающий два элемента х1, х2 типа int, • конструктор с параметрами для создания объектов в динамической области памяти, ... подробнее

Показать сообщение отдельно
123Unknown
1 / 1 / 0
Регистрация: 26.11.2012
Сообщений: 31

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

18.12.2012, 22:54. Просмотров 854. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru