gpt4 book ai didi

c++ - 需要改进我的代码的建议 : Search Algorithm

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:35 24 4
gpt4 key购买 nike

我是 C++ 的新手,需要一些这方面的建议。在这里,我编写了一段代码,用于测量任意整数 x 在数组中出现的次数并输出所做的比较。

但是我读到过,通过使用多路分支(“分而治之!”)技术,我可以使算法运行得更快。

谁能给我指出正确的方向,我应该怎么做?

这是我使用的另一种方法的工作代码:

#include <iostream>
#include <cstdlib>
#include <vector>

using namespace std;

vector <int> integers;
int function(int vectorsize, int count);
int x;
double input;

int main()
{
cout<<"Enter 20 integers"<<endl;
cout<<"Type 0.5 to end"<<endl;

while(true)
{
cin>>input;

if (input == 0.5)
break;

integers.push_back(input);
}

cout<<"Enter the integer x"<<endl;
cin>>x;

function((integers.size()-1),0);

system("pause");

}

int function(int vectorsize, int count)
{
if(vectorsize<0) //termination condition
{
cout<<"The number of times"<< x <<"appears is "<<count<<endl;
return 0;
}

if (integers[vectorsize] > x)
{
cout<< integers[vectorsize] << " > " << x <<endl;
}

if (integers[vectorsize] < x)
{
cout<< integers[vectorsize] << " < " << x <<endl;
}
if (integers[vectorsize] == x)
{
cout<< integers[vectorsize] << " = " << x <<endl;

count = count+1;
}

return (function(vectorsize-1,count));
}

谢谢!

最佳答案

如果数组未排序,只需使用一个循环将每个元素与 x 进行比较。除非您忘记告诉我们什么,否则我认为没有必要进行更复杂的操作。

如果数组已排序,则存在具有更好渐近复杂度的算法(例如二分查找)。但是,对于 20 个元素的数组,简单的线性搜索仍然是首选策略。

关于c++ - 需要改进我的代码的建议 : Search Algorithm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15883645/

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