帕斯卡冒泡排序打印每个排序行

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;