帕斯卡冒泡排序打印每个排序行
Pascal bubble sort print each sorted line
我的冒泡排序算法可以正常工作,但我想对其进行设置,以便打印最终输出过程中的每一行(19 行)。我几乎尝试了所有方法,但它不打印正确:
program Bubble_Sort;
const N = 20;
var
d : array[1..N] of integer;
var
i,j,x : integer;
begin
randomize;
for i := 1 to N do d[i] := random(100);
writeln('Before sorting:'); writeln;
for i := 1 to N do write(d[i], ' ');
writeln;
for j := 1 to N - 1 do
for i := 1 to N - 1 do
write(d[i], ' ');
if d[i] > d[i+1] then
begin
x := d[i]; d[i] := d[i+1]; d[i+1] := x;
end;
writeln('After sorting:'); writeln;
for i := 1 to N do write(d[i], ' ');
writeln;
end.
代码中心的外部循环,for j ...
循环针对每个气泡迭代运行。那就是您要输出排序状态的地方。因为您因此在 for j ...
循环中有多个语句,所以您还必须添加一对 begin .. end
:
for j := 1 to N - 1 do
begin
//one round of sorting
//display result so far
end;
排序没问题,除了当你添加了 write(d[i], ' ');
大概是为了输出一次迭代的排序结果,你改变了执行顺序变得完全错误。
从现在的位置删除 write(d[i], ' ');
。
要在每次迭代后显示排序结果,请添加一个新的 for k ...
循环和一个 writeln;
for k := 1 to N do
write(d[k], ' ');
writeln;
最终排序和进度显示的结构应如下所示:
for j := 1 to N - 1 do
begin
for i := 1 to N - 1 do
// one round of sorting
for k := 1 to N - 1 do
// output result of one sorting round
end;
我的冒泡排序算法可以正常工作,但我想对其进行设置,以便打印最终输出过程中的每一行(19 行)。我几乎尝试了所有方法,但它不打印正确:
program Bubble_Sort;
const N = 20;
var
d : array[1..N] of integer;
var
i,j,x : integer;
begin
randomize;
for i := 1 to N do d[i] := random(100);
writeln('Before sorting:'); writeln;
for i := 1 to N do write(d[i], ' ');
writeln;
for j := 1 to N - 1 do
for i := 1 to N - 1 do
write(d[i], ' ');
if d[i] > d[i+1] then
begin
x := d[i]; d[i] := d[i+1]; d[i+1] := x;
end;
writeln('After sorting:'); writeln;
for i := 1 to N do write(d[i], ' ');
writeln;
end.
代码中心的外部循环,for j ...
循环针对每个气泡迭代运行。那就是您要输出排序状态的地方。因为您因此在 for j ...
循环中有多个语句,所以您还必须添加一对 begin .. end
:
for j := 1 to N - 1 do
begin
//one round of sorting
//display result so far
end;
排序没问题,除了当你添加了 write(d[i], ' ');
大概是为了输出一次迭代的排序结果,你改变了执行顺序变得完全错误。
从现在的位置删除 write(d[i], ' ');
。
要在每次迭代后显示排序结果,请添加一个新的 for k ...
循环和一个 writeln;
for k := 1 to N do
write(d[k], ' ');
writeln;
最终排序和进度显示的结构应如下所示:
for j := 1 to N - 1 do
begin
for i := 1 to N - 1 do
// one round of sorting
for k := 1 to N - 1 do
// output result of one sorting round
end;