PASCAL-似乎是泡沫算法
PASCAL
问题:输入三个数 输出从小到大的排列
要求:用最少的变量 并证明使得变量最少的原因
这个好象是泡沫算法吧 谁给个源代码和证明
谢
参考答案:一、冒泡法排序
FOR I:=1 TO N-1 DO
FOR J:=N DOWNTO I+1 DO
IF A[J]<A[J-1]
THEN BEGIN T:=A[J];
A[J]:=A[J-1];
A[J-1]:=T
END;
二、交换法(最小元素法)排序
FOR I:=1 TO N-1 DO
BEGIN K:=I;
FOR J:=I+1 TO N DO
IF A[K]>A[J]
THEN K:=J;
IF I<>K
THEN BEGIN T:=A[I];
A[I]:=A[K];
A[K]:=T
END
END;
三、插入法排序
FOR I:=2 TO N DO
BEGIN X:=A[I];
J:=I-1;
WHILE (J>0) AND (A[J]>X) DO
BEGIN A[J+1]:=A[J];
J:=J-1
END;
A[J+1]:=X
END;
四、合并法排序
I:=1;
J:=1;
K:=1;
WHILE (I<=M) AND (J<=N) DO
BEGIN IF A[I]<=B[J]
THEN BEGIN C[K]:=A[I];
I:=I+1
END
ELSE BEGIN C[K]:=B[J];
J:=J+1
END;
K:=K+1
END;
WHILE I<=M DO
BEGIN C[K]:=A[I];
I:=I+1;
K:=K+1
END;
WHILE J<=N DO
BEGIN C[K]:=B[J];
J:=J+1;
K:=K+1
END;
五、快速法排序
PROCEDURE QUICKSORT(A,M,N);
BEGIN I:=M;
J:=N;
X:=A[M];
WHILE I<J DO
BEGIN WHILE (A[J]>=X) AND (J>I) DO J:=J-1;
IF J>I
THEN BEGIN A[I]:=A[J];
I:=I+1;
WHILE (A[I]<=X) AND (I<J) DO I:=I+1;
IF I<J THEN BEGIN A[J]:=A[I];
J:=J-1
END
END
END;
A[I]:=X;
IF M<I-1 THEN QUICKSORT(A,M,I-1);
IF J+1<Q THEN QUICKSORT(A,J+1,Q);