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之外,因为第一个调用不是来自过程本身。