'''
******************************* Algorithms *****************************

    Algorithm - describes a computation process that halts with a solution to a problem.
        There are many criteria for assessing the quality of an algorithm. The most essential criterion is ocrrectness, it actually solves the problem
        it is meant to solve. Readability and ease of maintenance are also important qualities. Run-timer performance is one of the most important qualities. 

    Benchmarking - measure the time cost of an algorithm to obtain an actual run time.

    Counting - Another technique used to estimate the efficiency of an algorithm with different problem sizes. Keep in mind you are
        counting the instructions in the high-level code in which the algorithm is written, not instructions in the executable machine language
        program.
'''