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

Слияние и сортировка массивов

16.10.2013, 23:20. Показов 6288. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
есть три массива:
int a[]={1,1,2,3,4,5,5,6};
int b[]={3,3,5,6,7,8,8,9,9,9,9,10};
int c[]=new int[a.length+b.length];

стоит задача залить значения c масива а и b в масив с, посортировав, без использования встроеных методов.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2013, 23:20
Ответы с готовыми решениями:

Сортировка и слияние массивов
Вот такая задача: Написать программу, которая объединяет два упорядоченных по возрастанию массива в один, также упорядоченный по убыванию...

Сортировка и слияние массивов
Заданы массивы целых чисел Х(n) и Y(m). Найти: • сумму элементов с нечетными индексами в массиве Х; • произведение элементов массива Y,...

Сортировка и слияние массивов
Товарищи, помогите пожалуйста разобраться с заданием. Буду очень благодарен.

10
352 / 162 / 20
Регистрация: 22.12.2011
Сообщений: 352
17.10.2013, 09:32
сортировка слиянием
2
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 4
17.10.2013, 16:38  [ТС]
Поскольку отдельные массивы уже отсортированы, получается их можно записать в масив С за 20 итераций (сумма елементов масива А и B), вот только не могу представить как. Пробовал реализовать как-то так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void main(String[] args) {
        int a[]={1,1,2,3,4,5,5,6};
        int b[]={3,3,5,6,7,8,8,9,9,9,9,10};
        int c[]= new int [a.length+b.length];
        int bCounter = 0;
        int aCounter = 0;
       
        for (int i = 0; i < c.length; i++) {
            if(a[aCounter] < b[bCounter]){
                c[i] = a[aCounter];
                aCounter++;
            }else{
                if(a[aCounter] > b[bCounter]){
                c[i] = b[bCounter];
                bCounter++;
                }
            }
0
352 / 162 / 20
Регистрация: 22.12.2011
Сообщений: 352
17.10.2013, 16:45
Kolos90, а теперь подумайте, что будет если элементы a[aCounter] и b[bCounter] будут равны? Верно, ничего хорошего(в вашем случае массив "с" будет {1, 2, 2, 0 .. 0}). Так что добавьте в любое из сравнений знак "=".
1
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 4
17.10.2013, 17:19  [ТС]
aCounter продолжает увеличиваться после последнего елемента массива, изза чего ArrayIndexOutOfBoundsException. Пробовал добавить что-то типа if(a[aCounter] <= b[bCounter] && aCounter < a.length), но ни к чему хорошему не привело. Помогите решить задачку чтобы я мог продолжить изучать елементарные алгоритмы.
0
352 / 162 / 20
Регистрация: 22.12.2011
Сообщений: 352
17.10.2013, 17:39
Kolos90, знаю, что решение ужасное, но башка уже не варит в конце дня
Java
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
        int a[]={1,1,2,3,4,5,5,6};
        int b[]={3,3,5,6,7,8,8,9,9,9,9,10};
        int c[]= new int [a.length+b.length];
        boolean aIsEmpty = false;
        boolean bIsEmpty = false;
        int aIndex = 0;
        int bIndex = 0;
        int cIndex = 0;
        while(!(aIsEmpty || bIsEmpty)){
            if(aIndex == a.length )
                aIsEmpty = true;
            else if (bIndex == b.length)
                bIsEmpty = true;
            else{
                if(a[aIndex] < b[bIndex]){
                    c[cIndex] = a[aIndex];
                    aIndex++;
                }else{
                    c[cIndex] = b[bIndex];
                    bIndex++;
                }
                cIndex++;
            }
        }
        
        if(aIsEmpty)
            for(int i  = bIndex; i < b.length; i++){
                c[cIndex] = b[i];
                cIndex++;
         }
         if(bIsEmpty)
            for(int i  = aIndex; i < a.length; i++){
                c[cIndex] = a[i];
                cIndex++;
            }
        
        for(int i: c){
            System.out.println(i);
        }
1
0 / 0 / 0
Регистрация: 10.10.2013
Сообщений: 4
17.10.2013, 17:47  [ТС]
Огромное спасибо!
0
352 / 162 / 20
Регистрация: 22.12.2011
Сообщений: 352
17.10.2013, 17:58
Java
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
List<Integer> arrayA = new ArrayList<Integer>();
List<Integer> arrayB = new ArrayList<Integer>();
List<Integer> arrayC = new ArrayList<Integer>();
        
Random rand = new Random();
        
int arrayALength = rand.nextInt(10);
int arrayBLength = rand.nextInt(10);
for(int i = 0; i < arrayALength; i++)
    arrayA.add(rand.nextInt(20));
for(int i = 0; i < arrayBLength; i++)
    arrayB.add(rand.nextInt(20));
 
Collections.sort(arrayA);
Collections.sort(arrayB);
 
for(int i: arrayA){
    System.out.print(i + " ");
}
System.out.println(System.getProperty("line.separator"));
for(int i: arrayB){
    System.out.print(i + " ");
}
System.out.println(System.getProperty("line.separator"));
        
while(!(arrayA.isEmpty()||arrayB.isEmpty())){               
    if(arrayA.get(0) > arrayB.get(0)){
        arrayC.add(arrayB.get(0));
        arrayB.remove(arrayB.get(0));
    } else{
        arrayC.add(arrayA.get(0));
        arrayA.remove(arrayA.get(0));
    }    
}
        
if(arrayA.isEmpty())
    arrayC.addAll(arrayB);
if(arrayB.isEmpty())
    arrayC.addAll(arrayA);
        
for(int i: arrayC){
    System.out.print(i + " ");
}
System.out.println(System.getProperty("line.separator"));
1
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
17.10.2013, 18:06
Цитата Сообщение от Sakralbar Посмотреть сообщение
Java
1
2
Collections.sort(arrayA);
Collections.sort(arrayB);
я так понял, по условию задачи нельзя такое юзать
0
352 / 162 / 20
Регистрация: 22.12.2011
Сообщений: 352
17.10.2013, 18:08
verylazy, ну по условию задачи исходные массивы отсортированы, как я понял.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
18.10.2013, 15:12
Java
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
class MergeSortExample {
    static int[] merge(int[] a, int[] b) {
        int[] c = new int [ a.length + b.length ];
        int ia, ib, ic;
        
        for ( ia = ib = ic = 0; ic < c.length; ++ic ) {
            if ( ia < a.length ) {
                if ( ib < b.length ) {
                    if ( a[ia] < b[ib] )
                        c[ic] = a[ia++];
                    else
                        c[ic] = b[ib++];
                }
                else {
                    c[ic] = a[ia++];
                }
            }
            else
                c[ic] = b[ib++];
        }
        
        return c;
    }
    
    public static void main(String[] args) {
        int[] a = { 1, 1, 2, 3, 4, 5, 5, 6 };
        int[] b = { 3, 3, 5, 6, 7, 8, 8, 9, 9, 9, 9, 10 };
        int[] c = merge(a, b);
        
        for ( int i : c )
            System.out.print(i + " ");
        
        System.out.println();
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.10.2013, 15:12
Помогаю со студенческими работами здесь

Сортировка и слияние массивов
Заданы два одномерных массива с различным количеством элементов и натуральное число k. Объединить их в один массив, включив второй массив...

Сортировка пузырьком + слияние массивов
Есть неупорядоченный массив Нужно пузырьковым методом рассортировать его по парам Допустим, массив 6 4 7 3 9 10 Должно быть так: 4...

Сортировка последовательных файлов, однофазная сортировка, слияние и т.п.
мне нужен сам код сортировки. неважно с каким условием. смысл такой: &quot;последовательность чисел: 1 4 3 8 6 7 2 5. В результате...

Слияние массивов
Получить массив С(k), упорядоченный по возрастанию, путем слияния массивов A(n) и B(m), упорядоченных перед этим по возрастанию, где k = n...

Слияние массивов
я новичек в программировании. Помогите пожалуйста решить слудеющию задачу на С++. Заданы три упорядоченных по возрастанию массива f,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru