Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.30;
Скачать: CL | DM;

Вниз

Что-то он сортировать не хочет...   Найти похожие ветки 

 
Rradion   (2003-10-21 14:47) [0]

Люди добрые, помогите. Есть МАССив, надо его отсортировать и выложить в листбох.
Написал такой код.

procedure TForm1.Button3Click(Sender: TObject); // sortirovka!!!
begin

for i:=2 to N do // sortiruem
for j:=N downto i do //
if MASS[j-1] > MASS[j] then //
begin //
Tmp:=MASS[j]; //
MASS[j]:=MASS[j-1]; //
MASS[j-1]:=Tmp; //
end; //

ListBox1.Clear; // Ochishaem ListBox

for i:=1 to N do // Kladjom iz Massiva v ListBox
ListBox1.Items.Add( IntToStr(MASS[i-1]) );

end;


Вроде все красиво, но сортировать он толком и не сортирует.

К примеру если в массиве есть 807, 990, 172 он выдаем 807, 26 ( от куда? ) и 172 + какой-то еррор... в место 172, 807, 990

Спасибо!


 
ZEE ©   (2003-10-21 14:53) [1]

что-то разбираться не хоца - смотри лучше тут
http://delphibase.endimus.com/?action=viewtopic&topic=mathsort


 
Digitman ©   (2003-10-21 15:04) [2]

если исх.массив сортировать необязательно и достаточно только заполнить ListBox уже отсортированными в порядке возрастания целочисл.значениями из исх.массива, то вот одно из простейших решений :

//ф-ция сравнеия, используемая при сортировке
function SortProc(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := Integer(List.Objects[Index1]) - Integer(List.Objects[Index2]);
end;

var
List: TStringList;
..

List := TStringList.Create;
try
for i:= 1 to N do
List.AddObject(IntToStr(MASS[i]), Pointer(MASS[i]));
List.CustomSort(@SortProc);
ListBox1.Items.Assign(List);
finally
List.Free;
end;


 
Rradion   (2003-10-21 16:37) [3]

>>если исх.массив сортировать необязательно и достаточно только заполнить ListBox...

К сожалению нет, именно отсортировать подобным алгоритмом надо :(

for i:=2 to N do // sortiruem
for j:=N downto i do //
if MASS[j-1] > MASS[j] then //
begin //
Tmp:=MASS[j]; //
MASS[j]:=MASS[j-1]; //
MASS[j-1]:=Tmp; //
end; //


Алгоритм из книжки, препод писал, а все равно не работает.

Спасибо!


 
Digitman ©   (2003-10-21 16:39) [4]


> препод писал


приведи-ка алгоритм, который ты кодировал


 
Rradion   (2003-10-21 16:47) [5]

>>приведи-ка алгоритм, который ты кодировал

for i:=2 to N do // sortiruem
for j:=N downto i do //
if MASS[j-1] > MASS[j] then //
begin //
Tmp:=MASS[j]; //
MASS[j]:=MASS[j-1]; //
MASS[j-1]:=Tmp; //
end;


 
Digitman ©   (2003-10-21 16:49) [6]


> Rradion


хреново тебе "препод" преподал понятие "алгоритм")

то что ты написал, это - результат кодировки алгоритма на языке Паскаль ! А сам алгоритм где ?


 
Rradion   (2003-10-21 17:00) [7]

URA! Nashol! Rabotaet!

for i:=1 to N-1 do // sortiruem
for j:= N-1 downto i do //
if MASS[j-1] > MASS[j] then //
begin //
Tmp:=MASS[j]; //
MASS[j]:=MASS[j-1]; //
MASS[j-1]:=Tmp; //
end;


Vsem spasibo!


 
Sandman25 ©   (2003-10-21 17:01) [8]

[7] Rradion (21.10.03 17:00)

Попробуйте в последнюю ячейку засунуть не самый большой элемент.


 
Digitman ©   (2003-10-21 17:07) [9]


> Алгоритм из книжки


получается, книжкам верить нельзя ? так что ли ?


 
Johnmen ©   (2003-10-21 17:07) [10]

>Rradion (21.10.03 17:00)

Есть ошибка...



Страницы: 1 вся ветка

Текущий архив: 2003.10.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-98446
Марат
2003-10-10 14:53
2003.10.30
SQL result


1-98632
SPIRIT
2003-10-16 03:36
2003.10.30
TDriveCombobox или другие способы определения жестких дисков!!!


7-98895
V-A-V
2003-08-07 14:51
2003.10.30
Шпион за печатью


4-98937
CIH
2003-08-25 09:17
2003.10.30
Работа со строками


4-98945
k@rt
2003-08-25 20:12
2003.10.30
Реестр