Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Для заданной матрицы определить вектор http://www.cyberforum.ru/cpp-beginners/thread735806.html
Для заданной матрицы определить вектор, k-й элемент которого равен 1, если элементы k-го рядка матрицы размещены по убыванию , и равен 0, если k-й рядок матрицы симметричный.
Проверяется только первая строка C++
Программа должна считывать строки из файла и проверять, является ли каждая из них палиндромом. Но у меня программа почему-то проверяет только первую строку, в чем причина? #include <string.h>...
Сортировка слиянием без потоков C++
#include <stdio.h> #include <values.h> #include <conio.h> #include <stdlib.h> int *a,m,e; int sort(int l, int r){ if (r-l<=1){ if (a<a) { e=a; a=a; a=e; }
C++ решение уравнений методом ньютона Приветик)) помогите плиз написать программу на с++ решение уравнений методом ньютона((((((, очень прошу http://www.cyberforum.ru/cpp-beginners/thread735800.html
C++ Синхронизация потоков http://www.cyberforum.ru/cpp-beginners/thread735796.html
#include <process.h> #include <stdio.h> #include <Windows.h> #include <iostream.h> #include <conio.h> using namespace std; struct ThreadArgs { int x; explicit ThreadArgs(int x_ =...
C++ дано числа х,у. найти принадлежит ли точка области
всем доброго вечера прошу помощи... нужно написать программы на лабораторные... скрины заданий предлагаются ниже 3)дано числа х,у. найти принадлежит ли точка (х,у) области изображенной на рисунке --...
C++ Переделать
Переделать это задание чтобы Базовый класс предусматривает создание и вывод массива, производный класс реализует функции по заданию и с использованием исключение. #include <iostream> using...
C++ Подскажите в чем ошибка! (бинарный поиск) Задача на тему "рекурсивные алгоритмы", а точнее - бинарный поиск. Работаю в Embarcadero Rad Studio 2010. 'Access violation' после ввода данных. Ругается на строку: ... http://www.cyberforum.ru/cpp-beginners/thread735776.html
C++ Найти наибольшей квадрат из матирцы http://www.cyberforum.ru/cpp-beginners/thread735772.html
Помогите пожалуйста с решением задачи: Дана матрица NxM, произвольно заполненная нулями и единицами, найти наибольший квадрат из нулей и выдать координаты. Заранее спасибо.
C++ Выражение должно иметь тип указателя на объект Не могу понять где я ошибся, на j ругается. // lalaba3.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "conio.h" #include <math.h> #include <clocale>... http://www.cyberforum.ru/cpp-beginners/thread735769.html
Lers
13 / 13 / 6
Регистрация: 27.05.2012
Сообщений: 208
0

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

18.12.2012, 19:56. Просмотров 552. Ответов 0
Метки (Все метки)

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
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
#include <process.h>
#include <windows.h>
#include <time.h>
#include <stdio.h>
#include <values.h>
#include <conio.h>
#include <stdlib.h>
 
using namespace std;
 
struct ThreadArgs {
    int l,r,k;
    explicit ThreadArgs(int l_ = 0, int r_ = 0, int k_ = 0): l(l_), r(r_), k(k_) {}
};
 
int *a,m[100],e;
 
int sort(int l, int r){
    if (r-l<=1){
        if (a[r]<a[l]) { e=a[r]; a[r]=a[l]; a[l]=e; }
        return 0;
    }
 
    int i,t1=l, t2=(r+l)/2+1;
 
    sort(t1, t2-1);
    sort(t2 ,r);
 
    int *b = new int [r-l+2];
    for (i=0; i<=r-l; i++){
        if (a[t1]<a[t2]){
            (b[i])=a[t1];
            t1++;
            if (t1==(r+l)/2+1) for (i=i+1; i<=r-l; i++, t2++) (b[i])=a[t2];
        } else {
            (b[i])=a[t2];
            t2++;
            if (t2==r+1) for (i=i+1; i<=r-l; i++, t1++) (b[i])=a[t1];
        }
    }
    for (i=l; i<=r; i++) a[i]=b[i-l];
    delete []b;
    return 0;
}
 
void start(void* arg){
     const ThreadArgs *ta = static_cast<const ThreadArgs*>(arg);
     sort(ta->l, ta->r);
}
 
int main(){
    HANDLE hand[2];
    system("cls");
    srand( time(NULL) );
    clock_t time;
    time=clock();
    int i;
    a=m;
    for (i=0; i<100; i++){
        a[i]=rand();
    }
 
    ThreadArgs p1(0,49,1);  
    hand[0]=(HANDLE)_beginthread(start, 0, &p1);
    
    ThreadArgs p2(50,99,2);     
    hand[1]=(HANDLE)_beginthread(start, 0, &p2);
 
    WaitForMultipleObjects(2, hand, true, INFINITE);
 
//    sort1(0,49);
//    sort2(50,99);
 
    int *b = new int [101], t1=0, t2=50; 
    for (i=0; i<=99; i++){
        if (a[t1]<a[t2]){
            (b[i])=a[t1];
            t1++;
            if (t1==50) for (i=i+1; i<=99; i++, t2++) (b[i])=a[t2];
        } else {
            (b[i])=a[t2];
            t2++;
            if (t2==100) for (i=i+1; i<=99; i++, t1++) (b[i])=a[t1];
        }
    }
    
    for (i=0; i<=99; i++) printf("%d ",b[i]);
 
    delete []b;
 
 
    printf("\n");
    time=clock()-time;
    printf("%f", (double)time/CLOCKS_PER_SEC);
 
    system("pause");
    return 0;
}
Опять же нужны комменты.
P.S. заранее спасибо, кто поможет.

Добавлено через 22 часа 53 минуты
Помогите пожалуйста

Вернуться к обсуждению:
Сортировка слиянием с потоками
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 19:56
Готовые ответы и решения:

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом?
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким...

Сортировка Слиянием vs Быстрая Сортировка - что лучше
Народ, помогите разобраться какой из методов сортировки лучше &quot;Сортировка Слиянием&quot; или &quot;Быстрая...

2 сортировки: пирамидальная сортировка и сортировка слиянием
Реализовать два улучшенных алгоритма сортировки. Для каждого алгоритма вычислить показатель...

Шейкерная сортировка + сортировка слиянием
вот часть когда,которая выполняет шейкерную сортировку : для символьного и целочисленого массива ....

Сортировка слиянием
Здравствуйте, изучая сортировку, в интернете наткнулся на код сортировки слиянием. int a; void...

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