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

Пузырьковая сортировка 2 массивов. Каждый массив в отдельном потоке - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти количество цифр в натуральном числе N, вводимом с клавиатуры. Borland C++ http://www.cyberforum.ru/cpp-beginners/thread570967.html
Нужна помощь! Максимальная длинна числа при котором правильно считает 10. Как сделать так, чтоб программа считала количество цифр больше 10??? /* Задание 3.100 Найти количество цифр в натуральном числе N, вводимом с клавиатуры.*/ #include <stdio.h> #include <conio.h> void main()
C++ метод Рунге-Кутта Помогите написать программу на хаотичное движение бильярдных шаров методом Рунге-Кутта. При столкновении шары должны отталкиваться, ну и с течением времени замедляться. http://www.cyberforum.ru/cpp-beginners/thread570961.html
C++ Структуры: Сведения об автомобиле состоят из номера, марки, фамилии владельца, признака прохождения техосмотра
Помогите решить структурную задачу Сведения об автомобиле состоят из номера, марки, фамилии владельца, признака прохождения техосмотра. Написать программу для занесения в массив информации о N автомобилях. Найти номера и владельцев автомобилей данной марки. Для каждой марки найти количество автомобилей этой марки.
Найти причины возникновения ошибок в коде и исправить эти ошибки (динамический двумерный массив) C++
Подскажите пожалуйста,что я упустила, где шибка? #include <iostream> using namespace std; void main() { int n=0; int m=0; cin>>n>>m;
C++ Составить словарь-справочник биологических растений http://www.cyberforum.ru/cpp-beginners/thread570936.html
Помогите пожалуйста. Нужно скласть словарь-справочник биологических растений, можно только одно растение для примера, надо в консоли (вел с клавиатуры название а вывело информацию).
C++ Удаление тэгов. Задача. Написал часть программы, а условие для удаления не могу придумать. Кто чем поможет? В текстовом файле хранится сохраненная html страница. Перевести ёё в простой текстовый вид, т.е. удалить из нее все html тэги. Html тэг имеет вид < тэг >. #include "stdafx.h" #include <Windows.h> #include <iostream> #include <clocale> #include <string> #include "stdio.h" using namespace std; подробнее

Показать сообщение отдельно
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255

Пузырьковая сортировка 2 массивов. Каждый массив в отдельном потоке - C++

11.05.2012, 03:49. Просмотров 841. Ответов 2
Метки (Все метки)

Здравствуйте!

Пузырьковая сортировку 2 массивов параллельно, то есть каждый массив в отдельном потоке сортируется!


2 потока, 2 массива

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
54
55
56
57
58
59
60
#include "windows.h"
#include "process.h"
#include "iostream"
#include "ctime"
 
const int size = 40000;
clock_t start, finish;
unsigned __stdcall ThreadFunc(void *arg)
{
    int **mas = (int**)arg;
    start = clock();
    for(int i = size - 1; i >= 1; --i)
    {
        for(int j = 0; j < i; ++j)
        {
            if(mas[j] > mas[j + 1])
            {
                int *buf = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = buf;
            }
        }
    }
    finish = clock();
    _endthreadex(0);
    return 0;
}
 
int main(int argc, char* argv[])
{
    setlocale(0,"");
    srand(time(0));
    unsigned uThreadIDs[2];
    HANDLE hThreads[2];
    
    int *mas = new int [size];
    int *mas1 = new int [size];
 
    for(int i = 0; i < size; i++)
    {
        mas[i] = rand() % 10;
        mas1[i] = rand() % 10;
    }
 
    hThreads[0] = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, mas, 0, &uThreadIDs[0]);
    hThreads[1] = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, mas1, 0, &uThreadIDs[1]);
 
    WaitForMultipleObjects(2, hThreads, TRUE, INFINITE );
 
    std::cout << "\nКоличество элементов в каждом массиве: " << size;
    std::cout << "\nВремя сортировки - 2 потока: " << (finish - start) / (double)CLOCKS_PER_SEC << " сек";
    
    CloseHandle( hThreads[0] );
    CloseHandle( hThreads[1] );
 
    delete  [] mas;
    delete  [] mas1;
    system("pause >> null");
    return 0;
}
для сранение времени сортировки

1 - поток, 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
54
#include "windows.h"
#include "process.h"
#include "iostream"
#include "ctime"
 
const int size = 40000;
clock_t start, finish;
unsigned __stdcall ThreadFunc(void *arg)
{
    int **mas = (int**)arg;
    start = clock();
    for(int i = size - 1; i >= 1; --i)
    {
        for(int j = 0; j < i; ++j)
        {
            if(mas[j] > mas[j + 1])
            {
                int *buf = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = buf;
            }
        }
    }
    finish = clock();
    _endthreadex(0);
    return 0;
}
 
int main(int argc, char* argv[])
{
    setlocale(0,"");
    srand(time(0));
    unsigned uThreadIDs[1];
    HANDLE hThreads[1];
    
    int *mas = new int [size];
 
    for(int i = 0; i < size; i++)
    {
        mas[i] = rand() % 10;
    }
    hThreads[0] = (HANDLE)_beginthreadex( NULL, 0, &ThreadFunc, mas, 0, &uThreadIDs[0]);
 
    WaitForMultipleObjects(1, hThreads, TRUE, INFINITE );
 
    std::cout << "\nКоличество элементов в каждом массиве: " << size;
    std::cout << "\nВремя сортировки - 1 потока: " << (finish - start) / (double)CLOCKS_PER_SEC << " сек";
    
    CloseHandle( hThreads[0] );
    
    delete  [] mas;
    system("pause >> null");
    return 0;
}
Как видно во вложениях время на сортировку одного массива в одном потоке и время сортировки двух массивов в двух потоков, практически одинаковое!

Груба говоря на сортировку второго массива время не тратиться, он сортируется параллельно первому!

Возможно не оптимальный вариант реализации!

Может кому - то пригодится!
Миниатюры
Пузырьковая сортировка 2 массивов. Каждый массив в отдельном потоке   Пузырьковая сортировка 2 массивов. Каждый массив в отдельном потоке  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru