pascal程序 冒泡

来源:百度知道 编辑:UC知道 时间:2024/07/02 05:13:26
我编了个程序,但如果是1,2,4,3排序的话,只要做一次就行了,怎么才能用最少的次数来做呢?
program num;
var a:array[1..n] of longint;
i,j,t,n:integer;
begin
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]<a[j] then begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
for i:=1 to n do write(a[i]);
writeln;
end.

你可以设置一个变量,每次交换的时候改变这个值,如果一次外循环后这个值没有改变过,则说明已经按序排列,就可以结束排序。没学过pascal,所以代码上就不能给建议了。。