我试图为我的Bubble Sort Algorithm创建一个for循环,如果没有更多的数字要排序,则使用break作为条件。但是编译器说BREAK是不允许的。这是我的代码
Procedure Sort(var data : arr; j : integer);
var
temp: integer;
begin
temp := data[j];
data[j] := data[j + 1];
data[j + 1] := temp;
end;
Procedure sortDescending(var data : arr; n : integer);
var
i, j : integer;
marker : boolean;
begin
for i := 1 to n do
marker := false;
begin
for j := 1 to n do
begin
if(data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if(marker = false) then
begin
break;
end;
end;
end;
这是您的代码。
for i := 1 to n do marker := false; begin for j := 1 to n do begin if(data[j] < data[j + 1]) then begin Sort(data, j); marker := true; end; end; if(marker = false) then begin break; end; end;
让我们在循环和缩进后添加一些空白,以使问题更清楚。
for i := 1 to n do
marker := false;
begin
for j := 1 to n do
begin
if (data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if (marker = false) then
begin
break;
end;
end;
相当于:
for i := 1 to n do
marker := false;
for j := 1 to n do
begin
if (data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if (marker = false) then
begin
break;
end;
break
不在循环中。
您可能想把begin
放在marker := false;
之前。
for i := 1 to n do
begin
marker := false;
for j := 1 to n do
begin
if (data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if (marker = false) then
begin
break;
end;
end;