gpt4 book ai didi

c - 查找数组中前 n 个最大的元素

转载 作者:太空狗 更新时间:2023-10-29 16:34:41 26 4
gpt4 key购买 nike

我有一个包含唯一元素的数组。我需要以尽可能低的复杂度找出数组中前 n 个最大的元素。到目前为止,我能想到的解决方案的复杂度为 O(n^2)。

    int A[]={1,2,3,8,7,5,3,4,6};
int max=0;
int i,j;
int B[4]={0,0,0,0,};//where n=4;
for(i=0;i<A.length();i++)
{
if(A[i]>max)
max=A[i];
}
B[0]=max;
for(i=1;i<n;i++){
max=0;
for(j=0;j<A.length();j++){
if(A[j]>max&&A[j]<B[i-1])
max=A[j];
}
B[i]=max;
}

拜托,如果有人能想出一个复杂性较低的更好的解决方案,我将不胜感激。而且我不打算改变原来的阵列!!

最佳答案

找到第 k 个最大的元素,使用 selection algorithm .
接下来,迭代数组并找到所有大于/等于它的元素。

复杂度:选择O(n),迭代O(n),所以总和也是O(n)

关于c - 查找数组中前 n 个最大的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com