“高效”排序
以下程序实现输入n个数,使用类似冒泡排序的方法,依次比较相邻的两个数,如果前一个数比后一个大,则交换两者,最终将输入的n个数从小到大排序后输出。程序在运行中发现某遍扫描后,没有数据交换发生,说明已经有序了,此时将退出扫描。请将程序补充完整。
program nbcz09_5;
var n,i,j,tmp:longint;
a:array[1..10000]of longint;
flag:boolean; //flag=true表示有交换发生,flag=false表示没有交换
begin
readln(n);
for i:=1 to n do read(a[i]);
i:=1;
_______flag:=true______;
while flag and (i<=n-1) do begin
flag:=false;
for j:=1 to _____n-i______ do
if a[j]>a[j+1] then begin //前一个比后一个大
tmp:=a[j];
___a[j]:=a[j+1]__;
a[j+1]:=tmp;
__flag:=true_____;
end;
_____inc(i)______;
end;
for i:=1 to n-1 do write(a[i],' ');
writeln(a[n]);
end.