Pascal Quicksort - 计算递归总数

时间:2014-05-11 14:11:38

标签: recursion pascal quicksort

我被我的快速程序计划困住了。我需要计算排序函数调用自身的总次数。

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;就在我打电话给排序(快速)程序之前(我不太确定它是否是解决问题的正确方法,但它是我能想到的全部)。

任何想法如何正确使用和/或为什么我的计数器不起作用?

1 个答案:

答案 0 :(得分:0)

这看起来过于复杂。如果你只是删除计数器,用值-1(而不是0)初始化P并用P:= P + 1替换P:= P +计数器,它应该可以工作。