不是VIP会员,不能显示答案

题目解答

题目:
“高效”排序
以下程序实现输入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.
考点:
分析:
解答:
评论:
老师: