Вот и хотел бы начать цикл сортировки одномерных массивов. Начать хотел бы с парной сортировки, хотя не стоило бы, наверное надо было начать с сортировки выбором минимального элемента, так как она самая медленная на мой взгляд, самая простая, да и парная сортировка почти ничем не уступает сортировки минимального элемента. Смысл этой сортировки состоит в том, что, если соседний элемент (i+1-элемент) больше или меньше (в зависимости от сортировки, по возрастанию или по убыванию), то мы их просто-напросто меняем местами и так до тех пор, пока не будет встречаться таких пар в массиве. Так как работа идет с одномерным массивом, то на форме у нас
- 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
for j:=0 to StringGrid1.ColCount-2 do
begin
if (StrToInt(StringGrid1.Cells[j,0]))>(StrToInt(StringGrid1.Cells[j+1,0])) then
begin
b:=StrToInt(StringGrid1.Cells[j,0]);
StringGrid1.Cells[j,0]:=StringGrid1.Cells[j+1,0];
StringGrid1.Cells[j+1,0]:=IntToStr(b);
end;
end;
end;
except
on e:Exception do
end;
end;
Видите мы сравниваем i-й элемент с i+1 элементом и если условие выполняется, то меняем их местами, а менять местами Вы знаете как, заводим дополнительную переменную и записываем в нее промежуточные данные. Все просто, далее сортировка минимального элемента.