Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2011, 15:23   #11
bumer7721
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 58
Счастье

В роди вот так

Код:
unit Unit2;
interface
uses
 Classes,Windows;
type
TMyThread = class(TThread) //Новый класс
   protected
   procedure Execute; override;
    end;
 

 var 
       a: array [0..20] of integer ;
  i:integer;
implementation

uses
 SysUtils, Unit1;
   var x:integer;
//Длинная процедура

 procedure BubbleSort( var a: array of integer; min, max: Integer); 
var 
i, j, tmp: integer; 
begin 
for i:=min to max do
begin 
for j:=min to max-i do 
if A[j]>A[j+1] then 
begin  
tmp:=A[j]; 
A[j]:=A[j+1]; 
A[j+1]:=tmp;
 end; 
//Виводи здесь масив A
end;
end;
 
   procedure InsertionSort( var a: array of integer; N: integer);
var 
B: array [0..10000] of integer; 
i, j: integer; 
begin 
for i:=0 to N do begin 
j:=i; 
while (j>1) and (B[j-1]>A[i]) do begin 
B[j]:=B[j-1]; 
j:=j-1; 
end; 
B[j]:=A[i]; 
//Здесь вивод масива B
end; 
for i:=0 to N do 
A[i]:=b[i]; 
end;

procedure QuickSort( var a: array of integer; min, max: Integer); 
Var
i,j,mid, tmp : integer; 
Begin
if min<max then begin
mid:=A[min];
i:=min-1;
j:=max+1;
while i<j do begin
repeat
i:=i+1;
until A[i]>=mid;
repeat
j:=j-1;
until A[j]<=mid;
if i<j then begin 
tmp:=A[i];
A[i]:=A[j];
A[j]:=tmp;
end;
end;
//виводи весь масив A
QuickSort(a, min,j);
QuickSort(a, j+1,max);
end;
end;

 procedure TMyThread.execute;
 begin
  Form1.Memo1.Clear;
for i:=0 to 19 do
begin
 a[i]:=Random(20) ;
   Form1.Memo1.Lines.Add(IntToStr(a[i]))
end;
BubbleSort(a,0,high(a));
for i:=0 to 19 do
begin
    Form1.Memo2.Lines.Add(IntToStr(a[i]))
   end;

   InsertionSort(a,high(a));
for i:=0 to 19 do
begin
    Form1.Memo3.Lines.Add(IntToStr(a[i]))
   end;

   QuickSort(a,0,high(a));
 for i:=0 to 19 do
begin
   Form1.Memo4.Lines.Add(IntToStr(a[i]))
end;
    end;

end.
Типа так... но я неуверен потому что не пробавал
К стати выводить нужно в StringGrid потому что ты же незнаэш сколько у тебя будет проходов
bumer7721 вне форума Ответить с цитированием
Старый 13.06.2011, 15:29   #12
bumer7721
Пользователь
 
Регистрация: 05.06.2011
Сообщений: 58
По умолчанию

В роди вот так

Код:

unit Unit2;
interface
uses
Classes,Windows;
type
TMyThread = class(TThread) //Новый класс
protected
procedure Execute; override;
end;


var
a: array [0..20] of integer ;
i:integer;
implementation

uses
SysUtils, Unit1;
var x:integer;
//Длинная процедура

procedure BubbleSort( var a: array of integer; min, max: Integer);
var
i, j, tmp: integer;
begin
for i:=min to max do
begin
for j:=min to max-i do
if A[j]>A[j+1] then
begin
tmp:=A[j];
A[j]:=A[j+1];
A[j+1]:=tmp;
end;
//Виводи здесь масив A
end;
end;

procedure InsertionSort( var a: array of integer; N: integer);
var
B: array [0..10000] of integer;
i, j: integer;
begin
for i:=0 to N do begin
j:=i;
while (j>1) and (B[j-1]>A[i]) do begin
B[j]:=B[j-1];
j:=j-1;
end;
B[j]:=A[i];
//Здесь вивод масива B
end;
for i:=0 to N do
A[i]:=b[i];
end;

procedure QuickSort( var a: array of integer; min, max: Integer);
Var
i,j,mid, tmp : integer;
Begin
if min<max then begin
mid:=A[min];
i:=min-1;
j:=max+1;
while i<j do begin
repeat
i:=i+1;
until A[i]>=mid;
repeat
j:=j-1;
until A[j]<=mid;
if i<j then begin
tmp:=A[i];
A[i]:=A[j];
A[j]:=tmp;
end;
end;
//виводи весь масив A
QuickSort(a, min,j);
QuickSort(a, j+1,max);
end;
end;

procedure TMyThread.execute;
begin
Form1.Memo1.Clear;
for i:=0 to 19 do
begin
a[i]:=Random(20) ;
Form1.Memo1.Lines.Add(IntToStr(a[i]))
end;
BubbleSort(a,0,high(a));
for i:=0 to 19 do
begin
Form1.Memo2.Lines.Add(IntToStr(a[i]))
end;

InsertionSort(a,high(a));
for i:=0 to 19 do
begin
Form1.Memo3.Lines.Add(IntToStr(a[i]))
end;

QuickSort(a,0,high(a));
for i:=0 to 19 do
begin
Form1.Memo4.Lines.Add(IntToStr(a[i]))
end;
end;

end.

Типа так... но я неуверен потому что не пробавал
К стати выводить нужно в StringGrid потому что ты же незнаэш сколько у тебя будет проходов
bumer7721 вне форума Ответить с цитированием
Старый 13.06.2011, 15:31   #13
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

у вас в задании нужно потоки использовать или нет?

если нет, уберите вобще TMyThread, из других потоков нельзя обращаться к VCL

если да, создайте 3 потока, каждый будет сортировать своим алгоритмом. Заодно будет видно, кто из потоков быстрей завершится. Только элементов нужно не 20 а 20000 хотя бы, чтобы разница была заметна.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 13.06.2011, 15:35   #14
radosteva21
Новичок
Джуниор
 
Регистрация: 12.06.2011
Сообщений: 9
По умолчанию

нужно с потоками, но я создала только один, и все 3 в нем написала, значит надо все в отдельных потоках?
radosteva21 вне форума Ответить с цитированием
Старый 13.06.2011, 16:09   #15
radosteva21
Новичок
Джуниор
 
Регистрация: 12.06.2011
Сообщений: 9
По умолчанию

можете показать пример хотя бы одного потока с одной сортировкой?
radosteva21 вне форума Ответить с цитированием
Старый 13.06.2011, 17:08   #16
radosteva21
Новичок
Джуниор
 
Регистрация: 12.06.2011
Сообщений: 9
По умолчанию

Код:
Form1.Memo2.Lines.Add(IntToStr(a[i])); // вывод отсортированного массива
   end;
   Form1.StringGrid1.Cells[i,0]:=IntToStr(i); // вывод промежуточных значений, правильно?
только в stringgrid ничего не выводит(((
radosteva21 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
Сортировка массива Weyner Помощь студентам 2 23.10.2010 08:32
Потоки в делфи gr1ngo Помощь студентам 4 11.12.2009 02:24
Сортировка массива выбором и пузырьком (делфи) kira_truelove Помощь студентам 1 05.12.2009 14:00
Потоки в делфи!!! S_Yevgeniy Общие вопросы Delphi 6 13.10.2009 14:20