A good algorithm is like a sharp knife - it does exactly what it is supposed to do with a minimum of effort. Using the wrong algorithm to solve a problem is like trying to cut a steak with a screwdriver: you may eventually get a digestible result, but you will expend considerably more effort than necessary, and the result is unlikely to be aesthetically pleasing. - from Cormen, Leiserson, and Rivest, _Introduction to Algorithms_