可有人請解釋的什麼是qsort void * x和*(int *)x?
*(int*)x;
const void *x
qsort(mass, 2*c, sizeof(int), sort)
return i>0 ?i:(-1.0*i)
工作在這個代碼:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int sortt(const void *x, const void *y)
{
int e=*(int*)x;
int e1=*(int*)y;
if(e>e1)
return 1;
else
return -1;
}
double abss(double i)
{
return i>0 ?i:(-1.0*i);
}
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int n,m,i,t=1,sum;
while(scanf("%d %d",&n,&m)==2)
{
double avg=0,balance=0;
int a[15];
sum=0;
for(i=0; i<15; i++)
a[i]=00000000;
for(i=0; i<m; i++)
{
cin>>a[i];
sum+=a[i];
}
avg=(double)sum/n;
for(i=m; i<2*n; i++)
{
a[i]=0;
}
qsort(a,2*n,sizeof(int),sortt);
printf("Set #%d\n",t++);
int first,last;
for(i=0; i<n; i++)
{
first=a[i];
last=a[2*n-i-1];
if(first==0 && last !=0)
{
printf(" %d: %d\n",i,last);
}
else if(first==0 && last==0)
{
printf(" %d:\n",i);
}
else
{
printf(" %d: %d %d\n",i,first,last);
}
balance+=abss(((double)first+(double)last)-avg);
}
printf("IMBALANCE = %0.5lf\n\n",balance);
}
return 0;
}
它是一種UVA OJ問題(410)解決 是什麼cpprefernce瞭解快速排序此排序風格,內置排序功能 CPP之間的差異,但不明白多少:(
建議閱讀材料:http://en.cppreference.com/w/c/algorithm/qsort。 –
不要包含。使用std :: sort。 –
2017-06-02 22:47:34