This is an introduction to the field of efficient parallel algorithms and to the techniques for efficient parallelisation. It is self-contained and presumes no special knowledge of parallel computers or particular mathematics. The book emphasises designing algorithms within the timeless and abstracted context of a high-level programming language rather than within highly specific computer architectures. This is an approach which concentrates on the essence of algorithmic theory, determining and taking advantage of the inherently parallel nature of certain types of problem. The authors present regularly-used techniques and a range of algorithms which includes some of the more celebrated and well-known. Efficient Parallel Algorithms is targeted at non-specialists who are considering entering the field of parallel algorithms. It will be particularly useful for courses aimed at advanced undergraduate or new postgraduate students of computer science and mathematics.