这个快速排序的的程序如何记录比较和交换的次数?

来源:百度知道 编辑:UC知道 时间:2024/06/16 02:12:15
void quicksort(int a[],int left,int right)
{
int p,i=left,j=right;
p=a[i];

while(i<j)
{
while(a[j]>p && j>left){j--;}if(i<j){a[i]=a[j];i++;}
while(a[i]<p && i<right){i++;}if(i<j){a[j]=a[i];j--;}

a[i]=p;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}

}

a[i]=p;
quicksort(a,left,i-1);
quicksort(a,i+1,right);
}
cout<<chgtimes<<" "<<cmptimes<<endl;

}

一个最简单也是最笨的方法是在里面加个printf,比较一次往屏幕上打一个A,交换一次打一个B。

方法二是给函数增加一个计算变量,每次调用的时候在函数里加上次数。

方法三是用静态函数。