【发布时间】:2019-07-14 06:55:17
【问题描述】:
有 6 个测试用例,其中 5 个是正确的。 程序即将找到第三大元素 在一个数组中。你能找到最后一个错误吗 测试用例能通过吗?
#include<stdio.h>
void thirdLargest(int arr[],int arr_size);
int main()
{
int n,a[1000],i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
thirdLargest(a,n);
return 0;
}
void thirdLargest(int arr[],int arr_size)
{
int i,j,temp;
for(i=0;i<arr_size-1;i++)
{
for(j=0;j<arr_size-i-1;j++)
{
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("The third Largest element is %d",arr[arr_size-3]);
}
【问题讨论】:
-
你没有描述测试用例,所以我假设它是一个秘密测试的在线法官。请不要指望我们会为您赢得挑战。
-
你不需要对它进行排序,只需遍历数组并不断更新最大的 3 个元素。
-
当元素超过 1000 个时会发生什么?
-
@Quimby 叹息....
-
根据meta.stackoverflow.com/questions/334822/… 此处描述的折衷方案,我确实提供了帮助(尽管是在评论中而不是在答案中)。到现在为止,至少有两个人含蓄地证明他们发现我的暗示是正确的......如果你做出妥协,我将升级为答案并继续提供更多提示。
标签: c