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

Не работает сортировка в приведенном коде - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возведение числа в степень http://www.cyberforum.ru/cpp-beginners/thread685842.html
Помогите написать программу, возводящщую число M в степень N (-10<M<10, 0<N<10 - проверить выполнение данных условий)
C++ Создать классы, описывающий прямоугольники и класс-наследник, описывающий прямоугольные параллепипеды Создать классы, описывающий прямоугольники. Найти площадь прямоугольника. Создать класс-наследник, описывающий прямоугольные параллепипеды. Определить площадь поверхности прямоугольного параллепипеда. http://www.cyberforum.ru/cpp-beginners/thread685827.html
C++ Оптимальная IDE для новичка
Подскажите в какой IDE лучше начать программировать Qt или Visual Studio?
C++ Какую библиотеку нужно подключить для работы с динамическими массивами
Подскажите, пожалуйста, какую библиотеку нужно подключить, чтобы это заработало: cli::array<array<int>^>^ Str = gcnew cli::array<array<int>^>(10); // создаём for (int i = 0; i < 10; i++) Str...
C++ Как работают указатели с массивами http://www.cyberforum.ru/cpp-beginners/thread685819.html
Хочу на простом примере перестановки двух элементов уяснить - как работают указатели с массивами, но ничего не получается. Объясните на программе - почему? #include<stdio.h> #include<math.h>...
C++ Сделать программу вывода графика изменения продуктивности всей бригады за неделю (на каждый день) Копу не трудно, напишите плз код программы, а то у меня ступор, даже не знаю с чего начинать. График должен выводится в консоли. Я предпологаю, что он должен выглядеть как то так: ... подробнее

Показать сообщение отдельно
David Sylva
1287 / 949 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
01.11.2012, 10:46
Я не понимаю, какой у тебя конкретно алгоритм. Есть обычное так называемое двух путевое слияние,
абстрактное обменное слияние, нисходящая сортировка слиянием, восходящая сортировка слиянием. Ты какой вариант пытался реализовать?

Добавлено через 10 минут
Вот классический вариант слиянием двух упорядоченных последовательностей из учебника Сенджвика
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream> 
 
void mergeAB(int c[], int a[], int N, int b[], int M) 
{ 
    for ( int i = 0, j = 0, k = 0; k < N+M; k++) 
    { 
        if( i == N) { c[k] = b[j++]; continue; } 
        if( j == M) { c[k] = a[i++]; continue; } 
        c[k] = (a[i] < b[j]) ? a[i++]:b[j++]; 
    }
}
 
int main() 
{ 
    int a[5] = { 1, 2, 3, 4, 5 }; 
    int b[5] = { 6, 7, 8, 9, 10 }; 
    int c[10];
    mergeAB(c, a, 5, b, 5); 
 
    for ( int i = 0; i < 9; i++) 
        std::cout << c[i] << " "; 
    std::cout << std::endl;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru