Форум программистов, компьютерный форум 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 = gcnew cli::array<int>(10);
C++ Как работают указатели с массивами http://www.cyberforum.ru/cpp-beginners/thread685819.html
Хочу на простом примере перестановки двух элементов уяснить - как работают указатели с массивами, но ничего не получается. Объясните на программе - почему? #include<stdio.h> #include<math.h> #include<conio.h> #define N 20 main() { extern void swap(int k,int l,int a); int a,k,l,i,n;
C++ Сделать программу вывода графика изменения продуктивности всей бригады за неделю (на каждый день) Копу не трудно, напишите плз код программы, а то у меня ступор, даже не знаю с чего начинать. График должен выводится в консоли. Я предпологаю, что он должен выглядеть как то так: ***************** *********** ****************** ************************* ******* подробнее

Показать сообщение отдельно
David Sylva
1285 / 947 / 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;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru