69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void qs(int* v,int left,int right,int (*cmp)(void *,void*));
void swap(int* v,int i,int j);
int compare(void *l, void *r);
int main()
{
srand(time(NULL));
int* v=(int *)malloc(sizeof(int)*10);
int i;
printf("ok\n");
for(i=0;i<10;i++){
v[i]=rand()%10;
printf("%d\n",v[i]);
}
printf("ok\n");
qs(v,0,10,compare);
//qsort(v,10,sizeof(int),compare);
for(i=0;i<10;i++){
printf("\t%d\n",v[i]);
}
free(v);
return 0;
}
void swap(int* v,int i,int j){
int t;
t=v[i];
v[i]=v[j];
v[j]=t;
}
void qs(int* v,int left,int right,int (*cmp)(void *,void *)){
int last;
if(left==right){
return;
}
int i;
last=left;
swap(v,left,(left+right)/2);
for(i=left+1;i<right;i++){
if((*cmp)((void*)v[i],(void*)v[left])){
swap(v,i,++last);
}
}
swap(v,left,last);
qs(v,left,last,(*cmp));
qs(v,last+1,right,(*cmp));
}
int compare(void *l, void *r){
return *(int*)l - *(int*) r;
}
for(i=left+1;i<right;i++){
if((*cmp)((void*)(&v[i]),(void*)(&v[left]))){//这里传给compare的参数不对
swap(v,i,++last);
}
}
qs(v,0,10,compare);参数呢?