## Overview

Data structures and algorithms are the building blocks of computer science. Data structures and algorithms are essential throughout the computer software and hardware industry. It is important to implement solutions to problems we try to solve using the correct algorithm and data structure to ensure improved performance, maintainability, and readability.

The importance of utilizing data structures increases with the complexity of the problem we are trying to solve. The industries involved in complex and time-sensitive data processing sectors, such as financial and stock trading, tend to pay extra careful attention to their complex algorithms. Therefore screen their potential candidates for their strong data structures and algorithms knowledge.

## What are Data Structures and Algorithms?

A data structure defines how data is arranged in a computer's memory. Basic data structures include arrays, linked lists, stacks, binary trees, hash tables, etc. Algorithms manipulate the data stored in data structures to solve a problem. Algorithms may sort, search, insert or delete data stored in our data structures to achieve the desired result. So to solve a problem, we have to pick the most suitable data structure and apply the correct algorithm. Therefore, data structures and algorithms are closely associated.

## What are Data Structures and Algorithms used for?

Data structures are used in almost every software application. Google search, travel reservation systems, and google maps are a few to mention. They all deal with a heavy volume of data with critical response times. Therefore, performance is a crucial factor.

## What are the basic data structures?

Listed below are some basic data structures with their advantages and disadvantages. These data structures are discussed in detail in the relevant course tutorial.

Data Structure | Advantages | Disadvantages |
---|---|---|

Array | Fast inserts Fast access by index | Slow search Slow deletion Fixed size |

Sorted Array | Faster search than unsorted array | Slow insertion Slow deletion Fixed size |

Stack | Fast LIFO access | Slow random access |

Queue | Fast FIFO access | Slow random access |

Linked list | Fast inserts and deletes | Slow search |

Binary tree | Fast insertion and deletion | Complexity |

Hash table | Fast access by key Fast insertion | Inefficient Slow deletion and access (if key unknown) |

Heap | Fast insertion and deletion Fast access to largest item | Slow access to remaining items |

Graph | Simulates practical solutions | Slow and complex |

2-3-4 tree | Search, Insertion, Deletion | Complex |

Red-black tree | Search, Insertion, Deletion | Complex |

## What is Big O Notation?

**In computer science, Big O notation is the rough measurement of a computer algorithm's efficiency.**

An algorithm consists of a series of steps required to perform a task efficiently. An algorithm's efficiency is calculated by the number of steps it takes to solve the problem and the growth of the run time based on input data length to the algorithm. This measurement varies on the required number of steps and the volume of data. The time complexity increases with the amount of data. That is a shorthand way to say how efficient a computer algorithm is. The Big O notation expresses the efficiency without mentioning actual data dimensions. It is similar to picking a shirt, small, medium, large, etc., instead of looking at shirt dimensions.