?? quicksort.p
字號:
type ktyp=array [1:100] of integer; //存放排序數的數組類型
var n:integer;i,j:integer; //將要排序的個數以及索引變量
k:ktyp; //存放輸入的排序數
procedure swap(var a,b:integer);
var temp:integer;
begin
temp:=a; a:=b; b:=temp;
end;
procedure quick(var k:ktyp;s,t:integer);
var i,j,flag,flag1:integer;
begin
flag:=1;
if s<t
then
begin
i:=s; j:=t+1;
while flag=1 do
begin
do
begin
i:=i+1;
if k[s]>k[i]
then
begin
if i<>t then flag1:=1 //
else flag1:=0 //
end //
else flag1:=0; //等價于!(k[s]<=k[i] || i==t))
end while flag1=1;
do
begin
j:=j-1;
if k[s]<k[j]
then
begin
if j<>s then flag1:=1 //
else flag1:=0 //
end //
else flag1:=0; //等價于!(k[s]<=k[t] || j==s))
end while flag1=1;
if i<j then swap(k[i],k[j])
else flag:=0 ; //跳出最外層循環
end;
swap(k[s],k[j]);
quick(k,s,j-1); //遞歸調用
quick(k,j+1,t); //遞歸調用
end;
end;
procedure quicksort(var k:ktyp;n:integer);
begin
quick(k,1,n);
end;
begin
writeln("請輸入排序數的個數:");
read(n); //輸入將要排序的數的個數
writeln("請依次輸入各數:");
for i:=1 to n do
begin
read(k[i]); //依次讀入各將要排序的數
end;
quicksort(k,n); //調用快速排序函數
writeln("排序后的結果:"); //循環輸出排序結果
for j:=1 to n do
begin
write(k[j]);write(" ");
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -