Data Structures
- A data structure is a logical method of representing data in memory.
- Data structure is strictly described as an instance of an Abstract Data Type (ADT).
- An Abstract Data Type is defined as a mathematical model of a user-defined type along with the operations performed on that model.
Data Structure | Strengths | Weaknesses |
Array | Fast access if index is known | Slow search, fixed size |
Stack | Features last in – first out access | Slow access to other elements |
Queue | Features first in – first out access | Slow access to other elements |
Linked list | Quick insertion and deletion | Slow search |
Binary tree | Quick insertion, deletion and search when tree is balanced | Deletion procedure is complex |
Hash table | Fast insertion and access if key is known | Inefficient memory usage, slow access if key is not known |
Heap | Fast insertion, deletion and access to largest element | Slow access to other elements |
Graph | Simulates real world problems | Some algorithms are slow and complex |
Algorithm
An algorithm can be described as sequence of steps or instructions required to solve a given problem.
It is a finite set of instructions written to accomplish a particular task.
When designing an algorithm, one must ensure that the
algorithm adheres to the following criteria:
Input: Some input data (can be empty in some cases) externally supplied to the algorithm
Output: At least one output is produced
Finiteness: The algorithm must terminate after finite number of steps
Definiteness: The instructions must be clear and unambiguous
Effectiveness: Every instruction must be basic enough to be carried out on paper
Following are certain points to be considered
while writing an algorithm :
Representing an algorithm.
Designing an algorithm.
Analyzing an algorithm.
Algorithm Analysis
Algorithm Analysis involves comparing different algorithms written for a specific problem. All the algorithms are compared for their space and time complexities.
Space complexity: It refers to the amount of storage the algorithm consumes.
Time complexity: It is the time required by the algorithm for execution.
Following are the different types of time complexities:
Best-case time complexity: It is the measure of minimum time required for an algorithm to execute for a known input size.
Average case time complexity: Average time complexity is the measure of time an algorithm will require to execute, for a typical input data size. This method requires statistical calculations.
Worst-case time complexity: It is the measure of maximum time required for an algorithm to execute for a known input size.