
02.06.2012, 18:58
|
Прохожий
|
|
Регистрация: 21.02.2012
Сообщения: 16
Репутация: 10
|
|
Цитата:
Сообщение от Kailon
А где в твоей примерной функции сортировки есть сравнение значений? Слышал что-нибудь о таком методе сортировке как сортировка пузырьком? Так вот здесь он вполне применим. В качестве пузырька у нас будет строка в StringGrid, которую мы специально добавим чтобы через нее менять значение строк местами.
Код:
procedure TFormGeneral.BtnSortingClick(Sender: TObject);
var
I, J, CntRow, Val1, Val2: Integer;
begin
StringGrid.RowCount := StringGrid.RowCount + 1;
CntRow := StringGrid.RowCount;
for J := 1 to CntRow - 1 do
for I := 1 to CntRow - 1 do
begin
Val1 := StrToIntDef(StringGrid.Cells[1, I], 0);
Val2 := StrToIntDef(StringGrid.Cells[1, J], 0);
if Val1 < Val2 then
with StringGrid do
begin
Rows[CntRow] := Rows[i];
Rows[i] := Rows[J];
Rows[J] := Rows[CntRow];
end;
end;
StringGrid.RowCount := StringGrid.RowCount - 1;
end;
P.S.: в данном случае сортировка по убыванию. Чтобы получить сортировку по возрастанию нужно чуть-чуть доработать код. А что бы его доработать нужно понять что тут к чему. Учиться, учиться и еще раз учиться 
|
Тооооооочно)) Вспомнил проходили мы такую сортировку))) Спасибо огромное) Просто Диплом делаю, в мозгах уже кипит все)))
|