c语言快速排序qsort函数

2025-04-09 08:43:19
推荐回答(2个)
回答1:

你这个是c程序还是c++
c++的话类型要求比较严格
比较函数接受的参数类型应该是const void*
c的话你main里函数原型的声明也不对啊,这样改一下

#include
#include
#include
int num[]={125,-26,53,12,-6,95,46,85,-45,785};/*定义全局数组*/

void main()
{
int i,comp1(const void *i,const void *j),comp2(const void *i,const void *j);

system("cls");/*清屏*/
printf("the original array is:\n");
for(i=0;i<10;i++)/*将数组按原序输出*/
printf("%10d",num[i]);
qsort(num,10,sizeof(int),comp1);
printf("\n The accending sorted array is:\n");
for(i=0;i<10;i++)/*将数组按升序输出*/
printf("%10d",num[i]);
qsort(num,10,sizeof(int),comp2);
printf("\n The decending sorted array is:\n");
for(i=0;i<10;i++)/*将数组按降序输出*/
printf("%10d",num[i]);
getchar();
}
comp1(const void *i,const void *j)
{
return *(const int*)i-*(const int*)j;
}
comp2(const void *i,const void *j)
{
return *(const int*)j-*(const int*)i;
}

回答2:

定义的comp1 和comp2改为
int comp1 ( const void *i , const void *j )
{
return *(int *)i - *(int *)j;
}

int comp2 ( const void *i , const void *j )
{
return *(int *)j - *(int *)i;
}