我如何实施这种Brute Force中值搜索算法?

时间:2016-05-30 03:27:31

标签: c++ algorithm

尝试围绕这段代码如何找到int数组的中位数,如this booklet的屏幕截图所示。我一直在尝试使用C ++复制代码块中的代码,如我的代码所示。

我需要使用哪些基本操作?我需要更改什么才能使我的代码正常工作?

#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int A[] = {2,3,4,7,8,9,10,12,15};
int n = ( sizeof(A) / sizeof(A[0]) );
int k = (n/2);

for(int i=0; n-1; i++)
{
    int numsmaller = 0;
    int numequal = 0;
    for(int j=1; n-1; j++)
    {
        if(A[j]<A[i])
        {
            numsmaller = numsmaller + 1;
        }
        else if(A[j]=A[i])
        {
            numequal = numequal + 1;
        }
    }
    if(((numsmaller < k)&&(k<=(numsmaller + numequal))))
    {
        k = A[i];
        cout << k;
    }
}
return 0;
}
############ FIXED CODED ######################。
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int A[] = {2,3,4,7,8,9,10,12,15};
int n = ( sizeof(A) / sizeof(A[0]) );
int k = (n/2);

for(int i=0;i <= (n-1); i++)
{
int numsmaller = 0;
int numequal = 0;
for(int j=1;j <= (n-1); j++)
{
    if(A[j]<A[i])
    {
        numsmaller = numsmaller + 1;
    }
    else if(A[j]==A[i])
    {
        numequal = numequal + 1;
    }
}
if(((numsmaller < k)&&(k<=(numsmaller + numequal))))
{
    k = A[i];
    cout << k;
    return 0;
}
}
return 0;
}

2 个答案:

答案 0 :(得分:2)

这个算法效率很低。你为什么要用它来搜索数组?

您可能需要查看quickselect算法。它工作得更快。但是你知道如果你在截止日期之前完成了作业。

答案 1 :(得分:0)

else if(A[j]=A[i])应为else if (A[j]==A[i])

您可能希望增加编译器的警告级别。通常是-Wall

此外,在您执行cout << k时,您应该返回或退出 - 程序已完成。