Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как рассортировать?


Страницы:   1 2 3

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;


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо