无序数组线性搜索c++

Unordered Array Linear Search c++

本文关键字:c++ 线性搜索 数组 无序      更新时间:2023-10-16

我的任务是:创建一个方法在一个无序的整数数组中搜索一个值,如果找到该值,返回其在数组中位置的索引,如果没有找到,返回-1。

它只在索引0中找到我输入的数字,否则它说没有找到它。我不知道出了什么问题,当我初始化我自己的数组时,它是工作的,但现在它不会了,因为我让用户创建自己的数组。

任何帮助将是伟大的!谢谢!

到目前为止我的代码是:
#include <iostream>
using namespace std;

//SearchArray prototype
int SearchArray( int arInt[], int elementAmount, int intSearched);

int main()
{
    int arInt[50];
    int elementAmount;
    int intSearched = 0;
    int i;
    cout << "How many elements would you like to add to your array?n";
    cin >> elementAmount;
    for( i = 0; i < elementAmount; i++)
    {
        cout << "Enter Number: ";
        cin >> arInt[i];
    }
        cout << "Search array for integer:n";
        cin >> intSearched;
        //Call search array method
        SearchArray(arInt, elementAmount, intSearched);

    system("pause");
    return 0;
}

int SearchArray( int arInt[], int elementAmount, int intSearched)
{
        int i;
        bool foundInt = false;
        for (i=0; i < elementAmount; i++)
        {
            if( arInt[i] == intSearched)
            {
                foundInt = true;
                cout << "Integer was found in array at index " << i << endl;
            }
            else if (!foundInt)
            {
                cout << "Integer was not found in arrayn";
                system("pause");
                return -1;
            }

        }
}

将以下代码添加到您的代码中的SearchArray方法中,并且它运行良好

int SearchArray( int arInt[], int elementAmount, int intSearched)
{
    for(int i=0; i< elementAmount; i++)
    {
        if (arInt[i] == intSearched)
            return i;
    }
    // element not found!
    return -1;
}

并在main的末尾添加以下内容以检索ans

int ans = SearchArray(arInt, elementAmount, intSearched);
cout<<"Indexed of the element"<<ans<<endl;

这是因为您总是在第一个元素上结束搜索。假设数组为

arr=[3,5,7] and intSearched is 5. 

现在在您的SearchArray()函数foundInt最初设置为false。因此,当i = 0 and arInt[i] == intSearched条件不为真时,由于foundIntfalse,所以它转到else语句。然后返回-1。下面的代码会更简单,并且可以完成任务:

int SearchArray(int *arInt, int elementAmount, int intSearched)
{
    int i;
    for(i=0; i < elementAmount; i++)
    {
        if(arInt[i] == intSearched)
        {
            cout << "Integer was found in array at index " << i << endl;
            return 1;
        }
    }
    cout << "Integer was not found in arrayn";
    system("pause");
    return 0;
}