Jump to content

Linear search

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 66.117.128.104 (talk) at 02:20, 24 May 2005 (Added exmple in Python). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computer science, linear search is a search algorithm, also known as sequential search, that is suitable for searching a set of data for a particular value.

It operates by checking every element of a list until a match is found. Linear search runs in O(N). If the data are distributed randomly, on average N/2 comparisons will be needed. The best case is that the value is equal to the first element tested, in which case only 1 comparison is needed. The worst case is that the value is not in the list, in which case N comparisons are needed.

Here is a sample implementation in Ruby:

def linear_search(array, value)
    for element in array
        return true if element == value
    end
    return false
end

Here is a sample implementation in PHP:

function linear_search($array, $value)
{
    foreach ($array as $current) {
        if ($current == $value) {
            return TRUE;
        }
    }
    return FALSE;
}

Here is another example in Java:

public static boolean linear_search(Comparable array, Comparable value) {
     for(Comparable c : array) {
         if(c.compareTo(value) == 0)
              return true;
     }

     return false;
}

Here is another example in Python

def LinearSearch(array, value):
     for i in array:
         if i == value:
             return True
         else:
             return False

And here is a sample implementation in C++ using templates and STL containers:

template <class C, typename T>
bool linear_search(const C& array, const T& value) {
    C::const_iterator iter = array.begin();
    C::const_iterator end = array.end();
    while (iter != end) {
        if (*iter == value)
            return true;
        ++iter;
    }
    return false;
}

Linear search can be used to search an unordered list. The more efficient binary search can only be used to search an ordered list.

If more than a small number of searches are needed, it is advisable to use a more efficient data structure. One approach is to sort and then use binary searches. Another common one is to build up a hash table and then do hash lookups.