int CmpInt(const void* a, const void* b)
{
return *(int*)b - *(int*)a; // 升序排列
}
typedef struct {
int id;
int rating;
}NodeInfor;
int minSetSize(int* arr, int arrSize)
{
int * cntList = 0;
int cntNum = 0;
int rtVal = 0;
int i = 0;
int cnt = 0;
int preVal = 0;
qsort(arr, arrSize, sizeof(int), CmpInt);
cntList = malloc(sizeof(int) * arrSize);
preVal = arr[0];
cnt = 1;
for(i = 1; i < arrSize; i++)
{
if(arr[i] == preVal)
{
cnt++;
}
else
{
cntList[cntNum++] = cnt;
cnt = 1;
}
preVal = arr[i];
}
cntList[cntNum++] = cnt;
qsort(cntList, cntNum, sizeof(int), CmpInt);
cnt = 0;
for(i = 0; i < cntNum; i++)
{
cnt += cntList[i];
if(cnt >= (arrSize / 2))
{
break;
}
}
rtVal = i + 1;
free(cntList);
return rtVal;
}