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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Арибет
0 / 0 / 0
Регистрация: 03.05.2010
Сообщений: 6
#1

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

03.05.2010, 15:22. Просмотров 707. Ответов 3
Метки нет (Все метки)

помоготи, плиз, с прогой(

есть 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" значением максимального элемента этого массива
Определить "Y" с точностью до члена ряда меньшего "e"(допустим: 0.001) C++
C++ Вычисление суммы позиций на которых в слове Х стоят буквы "в" и "п"
C++ Подсчитать, колько раз в произвольном тексте встречается символ "*" и "+"
Перебрать все слова длиной не более n, составленные из букв "а" и "b" C++
Error C2361: пропуск инициализации "Height" из-за метки "default" C++
Во введённой строке требуется поменять все буквы "а" на "i", и наоборот C++
C++ Сколько существует способов расставить между цифр знаки "+" и "-"
"Красный Тигр" vs. "Желтый Заяц". А каким будет 3005 год? C++
C++ Qt ошибки "qualified-id declaration before '(' token" и "expected '}' at end of input"
C++ Найти угол одной точки "A" в соотношении к точке "B" в градусах
C++ Дан массив из "n" элементов.Выполнить добавление элементов "k" в конец массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
03.05.2010, 21:04     "слить" 2 массива #3
Цитата Сообщение от g-man Посмотреть сообщение
засунь все в третий массив поочередно записав в него элементы первых двух с помощью циклов и сортируй как надо третий массив
Это не оптимальный вариант. Оптимальный будет такой:
Создаем новый массив, размерностью N+M - сумма размерностей массивов A и B.
Заводим два счетчика (один для первого массива, второй для второго).
С помощью этих счетчиков двигаемся по массивам слева направо сравнивая элементы массивов. Меньший элемент вставляем в новый массив и увеличиваем счетчик этого массива на 1. И так до конца массивов A и B.
CyBOSSeR
Эксперт C++
2299 / 1669 / 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 массива
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru