Ale moja tablica ma tylko 1 wymiar,więc czemu 2 pętle?Mógłbyś trochę przybliżyć mi temat?
To nie chodzi o liczbę wymiarów macierzy, a o liczbę iteracji i sprawdzeń; Twój kod sortujący tylko raz przechodzi od początku tablicy do jej końca i zamienia co trzeba zamienić, a to nie wystarczy - potrzeba więcej iteracji;
Napisałem przykładowy programik na bazie Twojego, z wykorzystaniem najprostszego zapisu wspomnianego sortowania:
type
TNumbersArr = array [0 .. 9] of Integer;
procedure Fill(out ANumbers: TNumbersArr);
var
LIndex: Integer;
begin
for LIndex := Low(ANumbers) to High(ANumbers) do
ANumbers[LIndex] := Random(10);
end;
procedure Sort(var ANumbers: TNumbersArr);
var
LDown, LTo, LSwap: Integer;
begin
for LDown := High(ANumbers) - 1 downto Low(ANumbers) do
for LTo := Low(ANumbers) to LDown do
if ANumbers[LTo] > ANumbers[LTo + 1] then
begin
LSwap := ANumbers[LTo];
ANumbers[LTo] := ANumbers[LTo + 1];
ANumbers[LTo + 1] := LSwap;
end;
end;
procedure Show(const ANumbers: TNumbersArr);
var
LIndex: Integer;
begin
for LIndex := Low(ANumbers) to High(ANumbers) do
Write(ANumbers[LIndex]:2);
WriteLn();
end;
var
LNumbers: TNumbersArr;
begin
Randomize();
Fill(LNumbers);
Show(LNumbers);
Sort(LNumbers);
Show(LNumbers);
ReadLn();
end.
Macierz zostaje wypełniona liczbami pseudolosowymi, wyświetlona w konsoli, następnie posortowana i znów wyświetlona, aby zobaczyć różnicę; Przykład wyjścia w konsoli:
8 9 7 9 8 6 5 1 4 7
1 4 5 6 7 7 8 8 9 9
Zapoznaj się z tym kodem - w razie czego pozmieniaj sobie nazwy (zmiennych czy procedur), gdybyś takich nie lubił; Jeżeli programy piszesz w Lazarusie to w funkcji wyświetlającej zawartość macierzy można użyć pętli For In Do:
procedure Show(const ANumbers: TNumbersArr);
var
LNumber: Integer;
begin
for LNumber in ANumbers do
Write(LNumber:2);
WriteLn();
end;
Zapis będzie nieco krótszy, ale działanie identyczne.