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

题目解答

题目:
第1题: “振荡”冒泡排序:
将n个整数从小到大排序(n≤1000),下面的程序是对普通冒泡法排序的一个改进:先从一端开始扫描,进行比较、交换,然后改变下一趟扫描的方向,作同样的处理,使冒泡过程来回“振荡”进行,并逐步缩小扫描范围,直到n个数都排好序为止。
program t2014_5;
var n,i:integer;
    a:             array[1..1000] of integer             ; 
procedure shakesort(x:integer);
  var i,h,t,k:integer;
      b:boolean;
  begin
    h:=1;t:=x;
    repeat
        b:=true  ;
      for i:=h to    t-1    do
        if  a[i]>a[i+1] then begin
            k:=a[i];a[i]:=a[i+1];a[i+1]:=k;
            b:=false;
        end;
      t:=t-1;
      for i:=t-1 downto h do 
        if       a[i]>a[i+1]      then  begin
          k:=a[i];a[i]:=a[i+1];a[i+1]:=k;
          b:=false;
        end;
      h:=h+1
     until b;
    end;
  begin
    randomize;readln(n);
    for i:=1 to n do a[i]:=random(1000)+1;
         shakesort(n)      ;
    for i:=1 to n do write(a[i]:4);
    writeln
  end.
考点:
分析:
解答:
评论:
老师: