快速排序
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10000
typedef int KeyType;
struct SqList{
KeyType r[MAXSIZE+1];
int length = MAXSIZE+1;
}A;
int bijiao = 0,jiaohuan = 0;
int Partition(SqList &L,int low,int high);
void Qsort(SqList &L,int low,int high);
int main(){
unsigned int i;
FILE *fp;
fp=fopen("realfile.dat","w");
for(i=1;i<MAXSIZE+1;i++){
A.r[i]=rand();
fprintf(fp,"%d\n",A.r[i]);
}
fclose(fp);
Qsort(A,1,MAXSIZE+1);
printf("快速排序的交换次数为:%d\n",jiaohuan);
printf("快速排序的比较次数为:%d\n",bijiao);
}
int Partition(SqList &L,int low,int high){
int pivotkey,i,j;
L.r[0] = L.r[low];
pivotkey = L.r[0];
i = low;
j = high;
while(i<j){
while(i<j && L.r[j]>=pivotkey){
j--;
bijiao++;
}
L.r[i] = L.r[j];
jiaohuan++;
while(i<j && L.r[i]<=pivotkey){
i++;
bijiao++;
}
L.r[j] = L.r[i];
jiaohuan++;
}
L.r[i] = L.r[0];
return i;
}
void Qsort(SqList &L,int low,int high){
int pivotloc;
if(low<high){
pivotloc = Partition(L,low,high);
Qsort(L,low,pivotloc-1);
Qsort(L,pivotloc+1,high);
}
}