An Introduction to Quantum Computing Algorithms