The key factor in determining the speed at which the software navigates is the algorithm that it depends on. To parse the sheer multitude of algorithms available, one must be aware of the efficiency concerns that each algorithm presents. Algorithms may be blended to utilize the strongest features of both, so it is essential to know the strengths and weaknesses of each. In this paper, the various aspects of choosing an algorithm are examined, including the importance of reducing computational time, minimizing instruction latency and instruction throughput for all iterations of the loop, and structuring the algorithm so that its instructions can be executed as independently as possible.