Qaupot Blog
Software Engineering, Trip

501. 순차 검색

🕐 Thu, 13 Mar 2014 09:00:00 GMT

순차 검색 (Linear Search)

순차 검색은 가장 기본적인 검색 방법입니다.
검색 대상이 되는 데이터를 순서대로 조회하면서 조건에 부합하는 데이터를 찾아냅니다.

#include <iostream>
#include <string>
#include <vector>

struct Data
{
    std::string name;
    int age;
};

class DataSet
{
private:
    std::vector dataVec;
public:
    void AddData(std::string name, int age)
    {
        Data newData;
        newData.name = name;
        newData.age = age;

        dataVec.push_back(newData);
    }

    Data LinearSearch(std::string name)
    {
        for (Data& ref : dataVec)
        {
            if (ref.name.compare(name) == 0)
            {
                return ref;
            }
        }
        return Data();
    }
};

int main(int argc, char** argv)
{
    DataSet dataSet;

    dataSet.AddData("Tom", 32);
    dataSet.AddData("John", 20);
    dataSet.AddData("Alex", 17);

    std::cout << dataSet.LinearSearch("John").age << std::endl;
}

간단한 for반복문을 사용한 순차검색의 예제 코드입니다.
vector에 포함된 데이터를 순회하면서 검색 대상을 찾아냅니다.

순차검색에서 검색대상이 발견되었을 때의 동작은 크게 두가지로 나눠볼 수 있습니다.
하나는 그 즉시 발견된 검색값을 되돌려 주는 방법이며,
다른 하나는 남아있는 모든 데이터에 대해 검색을 계속하여 한번에 데이터 집합을 되돌려 주는 방법입니다.

순차검색은 최악의 경우 검색 대상 전체인 N개의 값을 검사해야 하며, 그다지 빠른 검색방법은 아닙니다.
하지만 다른 검색 알고리즘과는 다르게 코드로 옮겼을 때 간단하고,
별다른 중간 계산비용이 들어가지 않는다는 장점이 있으며,
때때로 자료구조 설계에 따라 순차검색만이 가능한 경우도 있습니다.

이 블로그는 개인 블로그입니다. 게시글은 오류를 포함하고 있을 수 있지만, 저자는 오류를 해결하기 위해 노력하고 있습니다.
게시글에 별도의 고지가 없는 경우, 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 라이선스를 따릅니다.

This blog is personal blog. published posts may contain some errors, but author doing efforts to clear errors.
If post have not notice of license, it under creative commons Attribution-NonCommercial-NoDerivatives 4.0.