您的位置:首页 > 其它

找出一个数组中的第N大数

2018-03-18 22:00 183 查看
问题:找出一个数组中的第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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐