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

Ошибка в коде сортировки слиянием - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Даны 3 квадратные матрицы http://www.cyberforum.ru/cpp-beginners/thread969862.html
Даны 3 квадратные матрицы. Две из них сначало вычести, а потом умножить на третью. не могу додуматься с решением.
C++ Visual C++ не компилирует "Hello,world" Доброго времени суток! Простите за вопрос, но никак! не могу заставить Visual C++ 2008 выдать на экран этот мегасложный текст. Что пробовала: //error C2065: cout: необъявленный... http://www.cyberforum.ru/cpp-beginners/thread969861.html
Возрат массива из функции C++
Добрый вечер. Подскажите пожалуйста как вернуть массив #include "stdafx.h" #include <iostream> #include <string> #include <cstdlib> #include <Windows.h> using namespace std;
C++ char конвертация
Здравствуйте, есть кусок кода какой в принципе понятен как он работает ну вот только не могу понять строку sum=min+max+carry-2*'0'; именно -2*0; И на бумажке питалась понять, просто как можно...
C++ Структура. Вывести информацию по студентам в порядке уменьшения среднего балла http://www.cyberforum.ru/cpp-beginners/thread969847.html
Есть вот такая задача: В деканате хранится следующая информация о студентах: ФИО, номер группы, оценки за последнюю сессию. Вывести информацию по студентам в порядке уменьшения среднего балла. Номер...
C++ Связь между классами Здравствуйте друзья. У меня не получается из одного класса выбрать информацию вводимую с клавиатуры и сделать так, чтобы она выводилась в другом классе. Может я не очень ясно объяснил, но вот код.... подробнее

Показать сообщение отдельно
give_up
1 / 1 / 0
Регистрация: 17.03.2011
Сообщений: 51

Ошибка в коде сортировки слиянием - C++

05.10.2013, 23:13. Просмотров 376. Ответов 3
Метки (Все метки)

Вобщем, я реализовал рекурсивную сортировку слиянием (Merge Sort), но она работает за O(N), а должна за O(N log N), помогите найти ошибку в коде (a - исходный массив, N - количество элементов в нем)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void merge(int *a, int *b, int *c, int Na, int Nb)
{   
    int i=0; int j=0;
    while (i<Na && j<Nb) {
        if (a[i]<=b[j]) {c[i+j]=a[i];i++;}
        else {c[i+j]=b[j];j++;}}
    while (i<Na) {c[i+j]=a[i];i++;}
    while (j<Nb) {c[i+j]=b[j];j++;} 
}
 
void sort(int *a, int N)
{   
    int i,c;
    if (N<2) return;
    if (N==2) {if (a[0]>a[1]) {c=a[0];a[0]=a[1];a[1]=c;} return;}
    sort(a,N/2);
    sort(a+N/2,N-N/2);
    int *b = (int*)malloc(sizeof(int) * N);
    merge(a,a+N/2,b,N/2,N-N/2);
    for (i = 0; i < N; i++) a[i]=b[i];
    free(b);
    return;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru