Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion Pascal快速排序-计算递归的总数_Recursion_Pascal_Quicksort - Fatal编程技术网

Recursion Pascal快速排序-计算递归的总数

Recursion Pascal快速排序-计算递归的总数,recursion,pascal,quicksort,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

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

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 quick1,n,1。遗憾的是,它没有起作用。我还设置P:=0;就在我调用排序快速程序之前,我不太确定这是否是解决问题的正确方法,但这是我能想到的全部


你知道如何正确设置和/或为什么我的计数器不工作吗?

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

这不是OP要求的吗?他想要排序函数自身调用的总次数,那么,如何为每次调用增加一次计数器是不正确的呢?除了必须减去1之外,因为第一个调用不是来自过程本身。