线性 / 顺序 查找

在一个整型向量v中查找值a,返回相应的下标

// lsearch.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

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

using namespace std;

/**
    在一个向量中找到一个元素
    @param v 要查找的元素的向量
    @param a 要查找的值
    @return  返回第一个匹配的值,如果没找到返回-1
*/

int linear_search(vector<int> v, int a)
{
    for (int i = 0; i < v.size(); i++)
    {
        if (v[i] == a)
            return i;
    }
    return -1;
}

/**
    打印向量中的所有元素
    @param a 要打印的向量
*/
void print(vector<int> a)
{
    for(int i = 0; i < a.size(); i++)
        cout << a[i] << " ";
    cout << "\n";
}

/**
    设置要取的随机数的种子
*/
void rand_seed()
{
    int seed = static_cast<int>(time(0));
    srand(seed);
}

/**
    在一个range内计算随机数
    @param a range的底部
    @param b range的顶部
    @return 返回一个随机初始值x, a <= x 并且x <= b
*/
int rand_int(int a, int b)
{
    return a + rand() % (b - a + 1);
}

int _tmain(int argc, _TCHAR* argv[])
{
    rand_seed();
    vector<int> v(20);
    for (int i = 0; i < v.size(); i++)
        v[i] = rand_int(1, 100);
    print(v);
    cout << "Enter number to search for: ";
    int n;
    cin >> n;
    int j = linear_search(v, n);
    cout << " Found in position " << j <<"\n";
    system("pause");
    return 0;
}

 

posted on 2015-12-24 16:34  抽筋的马  阅读(231)  评论(0编辑  收藏  举报

导航