Текущий архив: 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.46 MB
Время: 0.009 c