Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Всегда не хватает времени
119 / 119 / 20
Регистрация: 15.10.2009
Сообщений: 493
1

Быстрая сортировка в несколько потоков

10.12.2012, 20:54. Показов 762. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Задали написать быструю сортировку массива в несколько параллельных потоков, но я не понимаю как главное будет ли виигрыш в сравнении с последовательной программой.

последовательную программу написал:
Delphi
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,Unit2, Vcl.Grids;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Label6: TLabel;
    Label7: TLabel;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  time:TDateTime;
  tt: Extended;
  TMyThread: MyThread;
  A:array of integer;
  count,i:integer;
implementation
 
{$R *.dfm}
 
procedure qSort(var ar:array of integer; low,high:integer);
var i,j:integer;
    m,wsp:integer;
begin
  i:=low;
  j:=high;
  m:=ar[(i+j) div 2];
  repeat
    while(ar[i]<m) do i:=i+1;
    while(ar[j]>m) do j:=j-1;
    if(i<=j) then begin
      wsp:=ar[i];
      ar[i]:=ar[j];
      ar[j]:=wsp;
      i:=i+1;
      j:=j-1;
    end;
  until (i > j);
  if(low<j) then qSort(ar,low,j);
  if(i<high) then qSort(ar,i,high);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  time:=Now;
  count:=strtoint(Edit1.Text);
  setlength(A,count);
 
  for i:=0 to count-1 do begin
    A[i]:=Random(100);
    Memo1.Lines.Add(inttostr(A[i]));
  end;
 
  qSort(A,0,count-1);
 
  for i:=0 to count-1 do begin
    Memo2.Lines.Add(inttostr(A[i]));
  end;
 
 
  tt:=(Now - time)/(24*60*60);
  ShowMessage('time: '+floattostr(tt))
end;
end.
помогите кто-нибудь хотя бы алгоритмом для потоков. количество потов зависит от размерности массива.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2012, 20:54
Ответы с готовыми решениями:

Быстрая сортировка в 1, 2, 4, 8 потоков
Нужно реализовать распараллеливание быстрой сортировки на 2, 4, 8 потоков с использованием winapi...

Сортировка массива используя несколько потоков
Здравствуйте. У меня есть, например, в списке 10 элементов - массивов строк, и я хочу отсортировать...

Сортировка массива методом пузырька в несколько потоков
Как ето зделать . Программа может работать и не всегда корректно, мне главное чтобы посмотреть как...

Замедление работы потоков если запущено несколько потоков
Есть отдельный поток который движет красным квадратом. Он каждую миллисекунду меняет положение...

0
10.12.2012, 20:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2012, 20:54
Помогаю со студенческими работами здесь

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка...

Быстрая сортировка, ситуация, при которой сортировка работает не корректно
Procedure sort(m, l: Integer); Var i, j, x, w: Integer; Begin i := m; j := l; x...

Быстрая сортировка и Обменная сортировка - реализация API функции
Всех приветствую! Делаю курсовой проект и появилась одна проблем-ка.... У меня есть готовые две...

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru