Мы уже поговорили об одном методе сортировке — парная сортировка. Сейчас поговорим о сортировке методом минимального элемента, по мне так они почти одна в одну, очень походи между собой, да и по скорости наверное почти одинаковые, но кому как нравится, методом минимальным элементом самая легкая сортировка. Да и не забываем, что мы до сих пор работает с одномерным массивом, но ее можно применять и для двумерных, например отсортировать строки так-то, так-то. Суть данной сортировки заключается в том, что мы каждый элемент массива принимаем за минимальный элемент и затем начиная с элемента, который стоит за этим минимальным сравниваем с ним, если меньше или больше (в зависимости от сортировки, по возрастанию или по убыванию), то делаем перестановку данных элементов, перестановку как делать думаю знаете и тут рассказывать нечего, но на всякий случай, дополнительную переменную заводим для хранения промежуточной информации и далее меняем. И это дело продолжается пока не закончится цикл, то есть вот и есть минус сортировки, в любом случае цикл до конца пройдет. Так как работаем мы с одномерным массивом, то сделаем из TStringGrid - одномерный массив. На форме у меня следующие компоненты
- TStringGrid
- TButton
В TStringGrid установлены в свойствах у меня в RowCount - 1, FixedCols-0,FixedRows-0, Options-goEditing – True.
Далее на событие OnClick TButton написал следующий код
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,b,min,c:integer;
begin
try
for i:=0 to StringGrid1.ColCount-1 do
begin
min:=StrToInt(StringGrid1.Cells[i,0]);
for j:=i+1 to StringGrid1.ColCount-1 do
begin
if (StrToInt(StringGrid1.Cells[j,0]))<(StrToInt(StringGrid1.Cells[i,0])) then
begin
b:=StrToInt(StringGrid1.Cells[j,0]);
StringGrid1.Cells[j,0]:=StringGrid1.Cells[i,0];
StringGrid1.Cells[i,0]:=IntToStr(b);
min:=StrToInt(StringGrid1.Cells[j,0]);
end;
end;
end;
except
on e:Exception do
end;
end;
Все, что выше описал, все перевели на язык Delphi. Так, что теперь уже знаем два метода сортировки и спокойно можем применять его в своих проектах. В следующий раз я расскажу как применять сортировку на примере какой-нибудь записи.