Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.07.2015
Сообщений: 20

Объединение массивов с использованием merge

13.10.2023, 17:48. Показов 765. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. При использовании std::merge(), происходит в некоторых случаях сортировка. Но почему-то не во всех.
Знаю, что merge() создан не для сортировки, а для объединения. Но поэтому и возник вопрос. Почему он в каких-то случаях располагает объекты в порядке возрастания, а в других - нет? Например, есть такой код:

Пример 1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int main()
{
    // Первый код
    std::vector<int> lst1 = {1, 2, 3, 4, 5};
    std::vector<int> lst2 = {6, 7, 8, 9, 10};
    std::vector<int> merged;
    std::merge(lst1.begin(), lst1.end(), lst2.begin(), lst2.end(), std::back_inserter(merged));
    cout<<"Вывод merged: "<<endl;
    for (auto elem : merged) {
        std::cout<<elem<<" ";
    }
    return 0;
}
Этот пример выведет числа по порядку от 1 до 10.

Изменим векторы так:
Пример 2
C++
1
2
std::vector<int> lst1 = {2, 3, 5, 8, 11};
std::vector<int> lst2 = {1, 4, 6, 9, 10};
И это работает правильно.

Но стоит поменять местами два элемента:
Пример 3
C++
1
2
std::vector<int> lst1 = {2, 3, 5, 8, 9};
std::vector<int> lst2 = {1, 4, 6, 11, 10};
то всё, числа 10 и 11 потеряют свой порядок.
Хочу понять логику распределения объектов vector и list при объединении при помощи std::merge().
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2023, 17:48
Ответы с готовыми решениями:

Слияние массивов. Merge sort
Пытаюсь сделать сортировку больших обьемов данных. В моем случае файл с double числом в каждой новой строчке. Файл примерно весит 1гб....

Объединение ячеек (Merge)
День добрый. Помогите пожалуйста оптимизировать док... Есть список (по количеству строк всегда разный) В нем несколько столбцов, в...

Объединение (Merge) ячеек по равным значениям
Ребята, При потытке создать небольшой макрос выполняющий кучу простых задач, я столкнулся с проблемой которую не знаю как решить....

2
И тут вот те нате
322 / 209 / 117
Регистрация: 12.07.2016
Сообщений: 555
13.10.2023, 17:56
Следопыт, std::merge предназначен для слияния двух уже отсортированных массивов, только тогда результирующий будет также отсортированным.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12923 / 6790 / 1818
Регистрация: 18.10.2014
Сообщений: 17,182
13.10.2023, 18:06
Цитата Сообщение от Следопыт Посмотреть сообщение
Почему он в каких-то случаях располагает объекты в порядке возрастания, а в других - нет?
Нипочему. Если вы нарушили требования на входные данные для алгоритма, его поведение не определено. Никто не знает, что и почему он там располагает в таких случаях.

Цитата Сообщение от Следопыт Посмотреть сообщение
Хочу понять логику распределения объектов vector и list при объединении при помощи std::merge().
Эта логика не оговаривается. Оговаривается лишь внешнее поведение алгоритма при соблюдении входных требований.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.10.2023, 18:06
Помогаю со студенческими работами здесь

Реализация Merge Sort, ошибка в объявлении массивов
Я пишу реализацию Merge Sort по псевдокоду, и у меня возникла ошибка при объявлении временных массивов &quot;выражение должно иметь...

Объединение двух массивов в один с чередованием элементов исходных массивов
Сила, и направление ветра на горном плато регистрируются один раз в день по очереди двумя исследователями. Каждый месяц результаты сводятся...

Объединение двух массивов в один с чередованием элементов исходных массивов.
Вариант 4 (упр 1 и 2)Помогите написать ребят! в частности не получается написать 2 задачу с матрицой нехватает навыков программирования ...

Массив: В методе merge ошибка : он некорректно обрабатывает ситуацию, когда один из массивов полностью выбран.
Задача: Метод Merger.merge(...) реализован с небольшой ошибкой - он корректно сливает, но некорректно обрабатывает ситуацию, когда один из...

Компилятор заменяет самописную merge на std::merge
Доброго времени суток. Возник такой вопрос, пишу свою сортировку слиянием, имеется 2 функции mergeSort и merge. При вызове merge компилятор...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru