![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как рассортировать?
Werka © (2006-11-27 12:44:00)Мне нужно написать программу для сортировки массива из 20 целых чисел заполненные случайными образам в диапазоне от -1000 до 1000. Вывести его на экран. Упорядочить по возрастанию, и вывести на экран снова уже упорядоченный.
Я смог вывести его на экран, но как его упорядочить по возрастанию я не знаю вот то что у меня получилось:
uses crt;
var i,j:integer;
s,n,a:real;
M:array[1..20]of real;
begin
clrscr;
randomize;
a:=0;
for i:=1 to 20 do begin
a:=random(2000);
M[i]:=a-1000;
writeln(M[i]:2:0)
end;
Writeln('---');
for j:=1 to 20 do begin
end;
readln;
end.
Пожалуйста помогите мне доделать этк прогу.
Steep (2006-11-27 13:37:00) [41]Удалено модератором
Андрей Сенченко (2006-11-27 13:35:00) [42]Удалено модератором
alex810 (2006-11-27 13:33:00) [43]Удалено модератором
Андрей Сенченко (2006-11-27 13:27:00) [44]Удалено модератором
Steep (2006-11-27 13:27:00) [45]
> %delphi%\Demos\Threads\thrddemo.dpr
> Если дельфи за паскаль тянет, то в папке демос есть пример
> аж трех методов сортировки.
Конечно человек который сам не может сделать сортировку сразу поймет что такое Thread и шустро его перетянет в паскаль вместе с 3-мя методами сортировки...
alex810 (2006-11-27 13:15:00) [46]Удалено модератором
Anatoly Podgoretsky (2006-11-27 13:11:00) [47]> Shell (27.11.2006 12:55:02) [2]
Если дельфи за паскаль тянет, то в папке демос есть пример аж трех методов сортировки.
Андрей Сенченко (2006-11-27 13:11:00) [48]Удалено модератором
alex810 (2006-11-27 13:09:00) [49]
> procedure TForm1.Button1Click(Sender: TObject);
Замени на
program mas2;
uses crt
alex810 (2006-11-27 13:08:00) [50]
> QuickSort. в любой книжке есть. Дональд Кнут например -
> рекомендую.
Что вы тут всем советуете книги почитать человек просит реальной помощи
Сортировка массива методом обмена
procedure TForm1.Button1Click(Sender: TObject);
const
SIZE=5;
var
a:array[1..SIZE] of integer;
k:integer; // текущий элемент массива
i:integer; // индекс для ввода и вывода массива
changed:boolean; // TRUE, если в текущем цикле были обмены
buf:integer; // буфер для обмена элементами массива
begin
// ввод массива
for i:=1 to SIZE do
a[i] := readln([i-1, 0] );
// сортировка массива repeat
Changed:=FALSE; // пусть в текущем цикле нет обменов
for k:=l to SIZE-1 do
if a[k] > a[k+l] then
begin // обменяем k-й и k+1-й элементы
buf := a[k]; a[k] := a[k+l]; a[k+l] := buf;
changed := TRUE;
end;
// вывод массива
for i:=l to SIZE do
writeln(a[i]);
until not changed; // если не было обменов, значит
// массив отсортирован
writeln('Maccив отсортирован.');
end;
Leonid Troyanovsky (2006-11-27 13:06:00) [51]
> Shell (27.11.06 12:55) [2]
> А на паскале как это будет выглядить
%delphi%\Demos\Threads\thrddemo.dpr
--
Regards, LVT.
Андрей Сенченко (2006-11-27 13:04:00) [52]http://alglib.sources.ru/sorting/
Метод пузырька, как гарантия твердой "4", вроде никем не отменялся.
alex810 (2006-11-27 13:04:00) [53]program mas;
uses crt;
const
SIZE=20;
var
a:array[1..SIZE] of integer;
min:integer; { номер минимального элемента в части
массива от i до верхней границы массива }
j:integer; { номер элемента, сравниваемого с минимальным }
buf:integer; { буфер, используемый при обмене элементов массива }
i,k:integer;
begin
clrscr;
// ввод массива
for i:=l to SIZE do readln(a[i]);
for i:=l to SIZE-1 do
begin
{ поиск минимального элемента в части массива от а[1] до a[SIZE]} min:=i;
for j:=i+l to SIZE do if a[j] < a [min]
then min:=j;
{ поменяем местами a [min] и a[i] }
buf:=a[i]; a[i]:=a[min]; a[min]:=buf;
{ вывод массива }
for k:=l to SIZE do writeln(a[k]);
writeln('MaccMB отсортирован.');
end;
Тут массив необходимо вводить вручную
<Цитата>
StriderMan (2006-11-27 13:00:00) [54]QuickSort. в любой книжке есть. Дональд Кнут например - рекомендую.
Shell (2006-11-27 12:55:00) [55]А на паскале как это будет выглядить
alex810 (2006-11-27 12:47:00) [56]Сортировка массива простым выбором
procedure TForm1.ButtonlClick(Sender: TObject);
const
SIZE=10;
var
a:array[1..SIZE] of integer;
min:integer; { номер минимального элемента в части
массива от i до верхней границы массива }
j:integer; { номер элемента, сравниваемого с минимальным }
buf:integer; { буфер, используемый при обмене элементов массива }
i,k:integer;
begin
// ввод массива
for i:=l to SIZE do
a[i]:=StrToInt(StringGridl.Cells[i-1,0]) ; Iabel2.caption:='';
for i:=l to SIZE-1 do begin
{ поиск минимального элемента в части массива от а[1] до a[SIZE]} min:=i;
for j:=i+l to SIZE do if a[j] < a [min]
then min:=j;
{ поменяем местами a [min] и a[i] }
buf:=a[i]; a[i]:=a[min]; a[min]:=buf;
{ вывод массива }
for k:=l to SIZE do
Label2.caption:=label2.caption+' '+IntTostr(a[k]);
Label2.caption:=label2.caption+#13; end;
Label2.caption:=label2.caption+#13+'MaccMB отсортирован.';
end;