different algorithms in computer science