问题:找出一个数组中的第N大数,该数组可能为空,数字也可能重复,例如:{1,1,2,2,3,3,4,4};
请写出代码找出第N大数。(本例第二大数为3)
void find_N_max(int a[], int len, int N)
{
if (NULL == a)
{
printf("数组为空\n");
return;
}
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len-i-1; j++)
{
if (a[j] < a[j+1])
{
int tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
}
int count = 1;
for (int i = 0; i < len - 1; i++)
{
if (a[i+1] < a[i])
count++;
if (count == N)
{
printf("第%d大数为%d\n", N, a[i+1]);
return;
}
}
printf("不存在第%d大数\n", N);
}