Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221

Многопоточная сортировка массива

07.10.2011, 06:28. Показов 3247. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, подскажите пожалуйста: как можно, используя threads отсортировать два массива, а потом объеденить
все это должно быть с использованием threads
(первые два для сортировки , третий для объединения)

Спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2011, 06:28
Ответы с готовыми решениями:

Многопоточная конкатенация
Здравствуйте! Я на каждый запрос в систему набор из 10 значений соединяю через запятую в String строку. Но обычный + не очень мне...

Чат, многопоточная отправка
Здача - усложнить серверную часть программы таким образом, чтобы пришедшее сообщение от одного пользователя отправлялось сразу всем...

Многопоточная обработка дерева
Есть следующий класс реализующий интерфейс Runnable: public class TreeHandler implements Runnable { private String name; ...

3
 Аватар для Daemon025
382 / 330 / 159
Регистрация: 06.12.2010
Сообщений: 894
07.10.2011, 07:53
Я уже думал отсортировать с потоками
http://en.wikipedia.org/wiki/Merge_sort
0
1 / 1 / 2
Регистрация: 07.02.2011
Сообщений: 221
07.10.2011, 20:54  [ТС]
а можете подсказать как используют join?
Я написала без него, а надо с ним.

Добавлено через 12 часов 26 минут
может кому-то еще пригодится
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
import java.util.*;
 
 
public class Sort{
    public static void main (String[] args){
        Scanner myScanner = new Scanner(System.in);
        System.out.println("Enter the size of an erray: ");
        int size = myScanner.nextInt();
        int[] firstArray = new int[size];
        System.out.println("Enter the item of array;");
        for(int i=0; i<size; i++){
            firstArray[i] = myScanner.nextInt();
        }
        int sizeM = size/2;
 
        int[] firstHalf; 
        int[] secondHalf; 
                
        if((size%2) == 0){
            firstHalf = new int[sizeM]; 
            secondHalf = new int[sizeM]; 
            for(int i=0; i<sizeM; i++){
                firstHalf[i] = firstArray[i];
                secondHalf[i] = firstArray[i+sizeM];
            }
        }
                        
        else{
            firstHalf = new int[sizeM];
            secondHalf = new int[sizeM+1];
            for(int i=0; i<sizeM; i++){
                firstHalf[i] = firstArray[i];
            }
            for(int i=0; i<sizeM+1; i++){
                secondHalf[i] = firstArray[i+sizeM];
            }
        }
        System.out.println(" first half of an array ");
        for(int i=0; i<firstHalf.length;i++){
            System.out.print(firstHalf[i]+ " ");
        }
        System.out.println("");
        System.out.println(" second half of an array ");
        for(int i=0; i<secondHalf.length;i++){
            System.out.print(secondHalf[i] + " " );
        }
        
        Thread thread1 = new Thread(new MergeTask(firstHalf)); 
        Thread thread2 = new Thread(new MergeTask(secondHalf)); 
        Thread thread3 = new Thread(new MergeTask(firstHalf, secondHalf)); 
        System.out.println(" ");
        System.out.println(" Sorted arrays " );
        
        thread1.start();        
        try { 
            thread1.join(); 
        }
        catch(InterruptedException ex) { } 
        
        thread2.start();
        try{ 
            thread2.join(); 
        }
        catch(InterruptedException ex) { } 
        
        thread3.start(); 
        try { 
            thread3.join(); 
        }
        catch(InterruptedException ex) { }
    }
}
 
        
class MergeTask extends Thread{ 
    int[] nums; 
    MergeTask(int[] n){
        nums = n; 
    } 
        
    MergeTask(int[] x, int[] y){
        int middle = x.length; 
        nums = new int[x.length + y.length]; 
        for(int i = 0; i < (x.length + y.length); i++){ 
            if(i < middle){ 
                nums[i] = x[i]; 
            } 
            else{ 
                nums[i] = y[i - middle]; 
            } 
        } 
    } 
    
    public void run() { 
        Arrays.sort(this.nums); 
        for(int i = 0; i < nums.length; i++) { 
            System.out.print(nums[i] + " "); 
        }
        System.out.println(); 
    } 
}
0
15 / 15 / 5
Регистрация: 19.10.2009
Сообщений: 187
07.10.2011, 22:29
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
thread1.start();                
                try { 
                        thread1.join(); 
                }
                catch(InterruptedException ex) { } 
                
                thread2.start();
                try{ 
                        thread2.join(); 
                }
                catch(InterruptedException ex) { } 
                
                thread3.start(); 
                try { 
                        thread3.join(); 
                }
                catch(InterruptedException ex) { }
Можно создать группу потоков и ждать пока они все завершаться, на сколько я помню.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.10.2011, 22:29
Помогаю со студенческими работами здесь

Многопоточная отправка json запросов
Здравствуйте, пишу приложение которое отправляет json запрос в систему статистики и та возвращает json ответ. Делал в последовательном...

Многопоточная программа выполняется медленнее чем однопоточная
Программа должна создать один поток исполнения для каждого файла и использовать эти потоки для одновременного подсчета числа строк во всех...

Многопоточная программа. Последовательный вывод в общий файл
Доброго времени суток! Помогите пожааалуйста..... Необходимо разработать программу, состоящую из 3 потоков. В среде разработки - Eclipse....

Многопоточная сортировка
У меня есть текстовый файл, в нем хранится массив значений, мне нужно считать данные из файла, отсортировать, и записать результат в другой...

Многопоточная сортировка
Здравствуйте, форумчане. Решаю задачу обработки данных большого размера 1 гб . Данные нужно отсортировать по возрастанию за ограниченное...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru