1樓:小葉子
孩子,用快排吧
這是最快的
程式1:
program kspv;
const n=7;
type
arr=array[1..n] of integer;
vara:arr;
i:integer;
procedure quicksort(var b:arr; s,t:integer);
var i,j,x,t1:integer;
begin
i:=s;j:=t;x:=b[i];
repeat
while (b[j]>=x) and (j>i) do j:=j-1;
if j>i then begin t1:=b[i]; b[i]:=b[j];b[j]:=t1;end;
while (b[i]<=x) and (i=x) and (j>i) do j:=j-1;
if j>i then begin b[i]:=b[j];i:=i+1;end;
while (b[i]<=x) and (ia[j+1]) then j:=j+1;
if t>a[j] then
begin a[i]:=a[j];i:=j;j:=2*i; end
else exit;
a[i]:=t;
end;
end;
begin
for i:=1 to n do read(a[i]);
for i:=(n div 2) downto 1 do
sift(a,i,n);
for i:=n downto 2 do
begin
write(a[1]:4);
a[1]:=a[i];
sift(a,1,i-1);
end;
writeln(a[1]:4);
end.
語重心長地告訴你:這不是我能實現的
2樓:匿名使用者
堆演算法因為數的大小不確定 操作次數不確定 應該是不能用for迴圈的
procedure 可以不用
但while一般還是要用的
3樓:匿名使用者
排1-n
program a1;
varn,i,t:integer;
a:array[1..1000]of 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[j]>a[i] then begin
t:=a[i];a[i]:=a[j];a[j]:=t;
end;
for i :=1 to n do write(a[i],' ');
求pascal遞迴演算法教程,free pascal用遞迴的方法編寫函式求fibonacci級數
我也不會。我學c和c 的。抱歉 free pascal用遞迴的方法編寫函式求fibonacci級數 function fibonacci n integer int64 begin if n 0 or n 1 then fibonacci 1else fibonacci fibonacci n 1 ...
有關匹配和排序的演算法,高手幫幫忙哈
一 插入排序 insertion sort 1.基本思想 每次將一個待排序的資料元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序 直到待排序資料元素全部插入完為止。2.排序過程 示例 初始關鍵字 49 38 65 97 76 13 27 49 j 2 38 38 49 65 97 76 ...
什麼是素數演算法,求素數的演算法
難得當歌對酒時 應當是素數判定演算法,也即判斷一個數是不是素數。常見的演算法有 1,暴力法,用2 sqrt n 之間的所有整數依次試除n,這種方法時間開銷很大。2,篩法。這種方法空間開銷很大。3,rabin miller演算法,這種方法在一定情況下會誤判。4,aks 演算法,多項式時間內判定 昔俊能...