这是我的快速排序代码,我想问一下如何在快速排序中记录关键字的移动次数和比较次数??急,在线等!!!

来源:百度知道 编辑:UC知道 时间:2024/05/03 17:01:35
关键字指的是下面程序中的23,34,45,21,17这几个数字

#include <iostream.h>
#include <stdlib.h>

void QuickSorter(int Array[],int left,int right);
int SelectPivot(int left,int right);
int Partition(int Array[],int left,int right);
void swap(int Array[],int i,int j);
void PrintArray(int Array[],int n);

void main()
{
int a[5]={23,34,45,21,17};
int size=5;
PrintArray(a,size);
QuickSorter(a,0,size-1);
cout << "The new sort is:"<<endl;
PrintArray(a,size);

}
/*快速排序*/
void QuickSorter(int Array[],int left,int right)
{
if(right<=left)
{
return;
}
int pivot=SelectPivot(left,right); //选择轴值
swap(Array,pivot,right);
pivot=Partition(Array,left,right);
QuickSorter(Array,left,pivot-1); //对轴值左边的子序列进行递归快速排序
QuickSorter(Array,pivot+1,right);
}
int SelectPivot(int left,int right)
{
re

int nCompareCount=0;//定义全局变量,也可以通过传址来记录
int nSwapCount=0;
void QuickSorter(int Array[],int left,int right)
{
//这个地方记录比较次数
nCompareCount++;
if(right<=left)
{
return;
}
int pivot=SelectPivot(left,right); //选择轴值
//这个地方记录交换次数
nSwapCount++;
swap(Array,pivot,right);
pivot=Partition(Array,left,right);
QuickSorter(Array,left,pivot-1); //对轴值左边的子序列进行递归快速排序
QuickSorter(Array,pivot+1,right);
}