Search algorithms can be used to retrieve information from data structures or search problem domains. They are classified based on their search mechanism, such as linear searches that check every record sequentially or binary searches that repeatedly target the center of the search space and divide it in half. Binary search algorithms have a maximum complexity of O(log n), meaning the number of operations needed to find the target is a logarithmic function of the search space size. Search algorithms are also used to find solutions to constraint satisfaction problems by assigning values to variables to satisfy equations or optimize functions. Local search methods view the search space as a graph and move between items along heuristic edges.