When developing structured programs correctly applying algorithmic design and data structure techniques will make a massive difference between your program running a few seconds and several minutes to days. Computer programs utilize algorithms to answer questions, which is one of the primary purposes of a computer system. An algorithm must produce the correct answer within is a series of logical and finite steps. The algorithm must also complete and not continue indefinitely (Shaffer, 2013).
Understanding the problem to be solved, is the first step in the algorithm. After the problem is understood, decisions on the computing platform, methods, data structures, and algorithms should be made. When these decisions are defined, the exact algorithm specification, verification, and analysis should be performed before any code is created, which occurs after the design is finished (Singhal, 2019). For more specific information about the design process, review the following book Analysis and design of algorithms.
With these factors in mind, verify and analyze the algorithmic design and data structure uses asymptotic analysis. The asymptotic analysis considers how time and space complexity are impacted by the algorithm. Time complexity assesses the number of times that code within an algorithm needs to execute based on the input size. Whereas, space complexity gauges the data structure and algorithm's effect on the memory required. Formulas exist to assist in the calculation of time and space complexity and for more specific information please review GeekforGeeks - Understanding Time Complexity with Simple Example and on Space Complexity at 'What does ‘Space Complexity mean?'.
When considering if some algorithms or data structure designs are superior to others misses the point of engaging in careful design planning. Grasping the question to be answered along with the existing format and size of the data set will guide in the selection and development of the algorithm. There is no superior or perfect algorithm for all use cases, but rather like a swiss army knife or toolbox, an algorithm that is best for the problem and input. An example, is in an existing sorted data set, like a phonebook, a binary search algorithm is superior over a linear search. However, if the data set is not sorted, the time and space complexity required to sort the data set would disqualify a binary search (Lysecky, 2015)
In my future development work, I will consider the design of the program more closely paying special attention to determining the best algorithm to solve my problem given my data set.
References
Arora, D. (n.d.). Understanding Time Complexity with Simple Examples. GeekforGeeks. Retrieved from https://www.geeksforgeeks.org/understanding-time-complexity-simple-examples/
GeeksforGeeks. (n.d.). What does ‘Space Complexity mean?. Retrieve from https://www.geeksforgeeks.org/g-fact-86/
Kleinberg, J., Tardos, E. (2006). Algorithm Design. Retrieved from http://www.cs.sjtu.edu.cn/~jiangli/teaching/CS222/files/materials/Algorithm%20Design.pdf
Lysecky, R., Vahid, F., Lysecky, S., & Givargis, T. (2015). Data structures essentials. Retrieved from https://zybooks.zyante.com/#/zybook/DataStructuresEssentialsR25/chapter/1/section/3
Shaffer, C. A. (2013). Data structures and algorithm analysis (3.2 ed.). Retrieved from http://people.cs.vt.edu/~shaffer/Book/JAVA3elatest.pdf
Singhal, S. (2019). Analysis and design of algorithms. Retrieved from https://books.google.com/books?isbn=9386551896
University of Cape Town. (2014). Sorting, searching and algorithm analysis. Retrieved from http://python-textbok.readthedocs.io/en/latest/Sorting_and_Searching_Algorithms.html
University of Texas. (n.d.).Complexity Analysis. Retrieved from http://www.cs.utexas.edu/users/djimenez/utsa/cs1723/lecture2.html
Zeigler, Z. (2004). Time, complexity, space complexity, and the O-notation. Retrieved from http://www.leda-tutorial.org/en/official/ch02s02s03.html