我被我的快速程序计划困住了。我需要计算排序函数调用自身的总次数。
procedure quick (first, last, counter: integer);
var i, k, x : integer;
begin
i := first;
k := last;
x := a[(i+k) div 2];
counter := counter + 1;
while i<=k do begin
while a[i] < x do
i:= i+1;
while a[k] > x do
k:= k-1;
if i<=k then begin
prohod(i,k);
i:=i+1;
k:=k-1;
end;
end;
if first<k then quick(first,k, counter);
if i<last then quick(i,last, counter);
P:= P + counter;
end;
我试过这个,其中P是全局变量而counter是递归变量,首先称为1(quick(1,n,1))。可悲的是没有工作。我还设置P:= 0;就在我打电话给排序(快速)程序之前(我不太确定它是否是解决问题的正确方法,但它是我能想到的全部)。
任何想法如何正确使用和/或为什么我的计数器不起作用?
答案 0 :(得分:0)
这看起来过于复杂。如果你只是删除计数器,用值-1(而不是0)初始化P并用P:= P + 1替换P:= P +计数器,它应该可以工作。