Binary search

If the data is sorted then a fast search which can be used is a binary search.

This involves looking at the 'middle' record. If the required record is before this one, then discard the second half of the file; if it is after this one, then discard the first half of the file. Repeat the process, discarding half the file each time, until the required record is found.

Pseudocode:

Assume the data keys are stored in an array Key[1..n] and we are searching for the data whose key is WantedKey

first := 1;
last := n;
repeat
  m := (first+last) div 2;
  if WantedKey < Key[m] then
    last := m-1
  else  
    first := m+1;
until Key[m] = WantedKey;

Note that this algorithm assumes that the data key is not missing. A better algorithm would be:

first := 1;
last := n;
found := false
repeat
  m := (first+last) div 2;
  if WantedKey = Key[m] then found := true;
  if WantedKey < Key[m] then
    last := m-1
  else  
    first := m+1;
until found or (last < first);

Note that 'until found' is short for 'until found = true'.