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

"слить" 2 массива - C++

Восстановить пароль Регистрация
 
Арибет
 Аватар для Арибет
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 6
03.05.2010, 15:22     "слить" 2 массива #1
помоготи, плиз, с прогой(

есть 2 отсортированных в порядке неубывания массива A[1,N] и B[1,M]. получить отсортированный массив C[1,N+M], состоящий из элементов массивов А и В ("слить" вместе массивы А и В)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2010, 15:22     "слить" 2 массива
Посмотрите здесь:

C++ Заменить все элементы массива большие чем "a" значением максимального элемента этого массива
В одномерном массиве состоящим из "N" вещественных элементов вычислить сумму элемента массива с не четными "N" C++
При сокращении "Фамилия Имя Отчество" к "Фамилия И.О." пропадают "И.О." C++
C++ Ошибки в примере:"newline in constant"и"unexpected end of file while looking for precompiled header directive"
Наследование классов "Заявка", "Техническое задание", "Техническое предписание" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
g-man
8 / 8 / 1
Регистрация: 02.04.2010
Сообщений: 25
03.05.2010, 20:56     "слить" 2 массива #2
засунь все в третий массив поочередно записав в него элементы первых двух с помощью циклов и сортируй как надо третий массив

C++
1
2
3
4
5
int i;
       for(i = 0; i<N; i++)
       {c[i] = a[i];}
       for(int in = 0; in < M; in++)
       {c[i] = b[in];}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
03.05.2010, 21:04     "слить" 2 массива #3
Цитата Сообщение от g-man Посмотреть сообщение
засунь все в третий массив поочередно записав в него элементы первых двух с помощью циклов и сортируй как надо третий массив
Это не оптимальный вариант. Оптимальный будет такой:
Создаем новый массив, размерностью N+M - сумма размерностей массивов A и B.
Заводим два счетчика (один для первого массива, второй для второго).
С помощью этих счетчиков двигаемся по массивам слева направо сравнивая элементы массивов. Меньший элемент вставляем в новый массив и увеличиваем счетчик этого массива на 1. И так до конца массивов A и B.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.05.2010, 21:05     "слить" 2 массива #4
Цитата Сообщение от g-man Посмотреть сообщение
засунь все в третий массив поочередно записав в него элементы первых двух с помощью циклов и сортируй как надо третий массив
Глупый способ. Тебя факт того, что массивы уже отсортированы не смущает?
Арибет, вот функция, которая сливает два отсортированных по неубыванию массива в один:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int* Merge(const int* arr1, int size1, const int* arr2, int size2)
{
  int* arr_dest = new int[size1 + size2];
 
  int i = 0, j = 0, k = 0;
 
  while(i < size1 && j < size2)
    arr_dest[k++] = (arr1[i] < arr2[j])? arr1[i++] : arr2[j++];
 
  while(i < size1)
    arr_dest[k++] = arr1[i++];
 
  while(j < size2)
    arr_dest[k++] = arr2[j++];
 
  return arr_dest;
}
}
Yandex
Объявления
03.05.2010, 21:05     "слить" 2 массива
Ответ Создать тему
Опции темы

Текущее время: 05:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru