Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.68/19: Рейтинг темы: голосов - 19, средняя оценка - 4.68
13 / 13 / 0
Регистрация: 01.09.2009
Сообщений: 69
1

Объединить два отсортированных массива

12.01.2010, 18:00. Показов 3811. Ответов 1
Метки нет (Все метки)

Задача такая. "Заданы два упорядоченных по возрастанию массива. Составить из их значений третий, также упорядоченный по возрастанию (слияние)." Написал что называется в лоб все работает. Но преподу не понравилось что слишком много операций сравнения... заставил оптимизировать. Помогите пожалуйста.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <conio.h>
 
void main()
{
 
    // объявление массивов и их размеров
    const int sz_A=10, sz_B=6, sz_C=sz_A+sz_B;
    short A[sz_A]={-10, -5, -1, 0, 1, 2, 4, 12, 13, 21};
    short B[sz_B]={-10, 5, 6, 7, 8, 21}, C[sz_C];
 
    int i=0, j=0, k=0; // переменные счетчики, для обращения к индексам массивов
        
        for (k=0;k<sz_C;k++)
        {
            if (i<sz_A && j<sz_B) // проверка окончания какого-либо из двух массивов  
            {
                if (A[i]<B[j]) // сравнение элементов массивов и помещение меньшего в третий массив
                {
                    C[k]=A[i];
                    i++;
                }               
                else
                {
                    C[k]=B[j];
                    j++;
                }
            }
            else
 
            /* если какой-то из массивов закончился, заполнить конечный массив элементами
               оставшегося */
            {
                for(;k<sz_C;k++){
                    if (i<sz_A){
                        C[k]=A[i]; i++;
                    }
                    if (j<sz_B){
                        C[k]=B[j]; j++;
                    }
                    
                }
 
            }
 
        }
// вывод результирующего массива
    for (k=0; k<sz_C; k++){
        printf("%d ", C[k]);
    }
 
    _getch();
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2010, 18:00
Ответы с готовыми решениями:

Объединить два отсортированных массива
Даны два отсортированы по возрастанию значений массивы вещественных чисел. Сформировать из них один...

Есть два отсортированных массива А и В. Надо в А загрузить все элементы В и отсортировать
Всем Привет!!! Нужна помощь! Не получается! Надеюсь на вашу помощь! Есть два отсортированных...

Объединить два массива в один, включив второй массив между k-ым и (k+1)-ым элементами первого массива
Может кто решить ? вовсе не могу понять ... Дано два одномерных масива различной размерности....

Объединить два массива в один
Помогите кто чем может, не получается объединить два массива в один, оч надо посмотрите кто может...

1
25 / 25 / 3
Регистрация: 27.12.2009
Сообщений: 82
12.01.2010, 19:37 2
C++
1
2
3
4
5
6
7
for(;k<sz_C;k++
{ if (i<sz_A)
{ C[k]=A[i];
 i++; }
 if (j<sz_B)
{ C[k]=B[j];
 j++; }
тут else можно использовать вместо if
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2010, 19:37

Объединить два массива в третий и отсортировать его
У нас есть два отсортированных массива, мы создали цикл, объединили в нем эти два массива, и теперь...

Объединить два массива в третий массив, отсортированный по убыванию
Помогите пожалуйста закончить. В общем есть два массива, один отсортирован по возрастанию, второй...

Объединить два кода в один
Здравствуйте! Помогите пожалуйста обьеденить два кода в СИ в один. Программы одинаковые, только...

Как объединить два отсортированных массива?
int MyArr1 = new int; int MyArr2 = new int; for (int i = 0; i &lt; length;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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