# Data Structures & Algorithms

This blog post talks about the concepts of data structures and algorithms and introduces the why of integrating them. A few topics in data engineering will be scanned through.

What is an algorithm ?

An algorithm is a well structured solution that solve issues.

What are data structures ?

Data structures are notional formulation of information. They actually pair well with algorithms simply because algorithms capabilities to solve problems rely on data structures when implemented.

You can use algorithm to fix your business issues, plan your everyday schedule and anticipate your opponent move when playing chess, but that usually occur in a loose fashion.

However computers make use of it in a very structured style. Therefore all informations shall be processed through data structures and algorithms by programs.

Data engineers as scientists are often solicited to produce polished solutions; and algorithms help us to do just that.

The motto of data structures and algorithms ->

Both notions follow three universal principles in their efficient integration when manipulating informaiton and fixing issues:

1. Efficiency -> If they’re used so famously and controversialy with derogatory terms, people surely relied, rely and will continue to rely on them for greater outcome. This comes with efficient building blocks with a capacity to connect a problem with a solving proposal. Indeed, recurrent requests for a way out gives place to a brain concentration around one specific demand that creates over time efficient spinning wheel of date structured through algorithm.
2. Abstraction -> Data engineers issues may touch complex concepts and dive into merely understandable situations at first. It is therefore useful to extract the situation and deal with it in a more simple abstract manner and then reapply the clarified and minimalist patch to solve the fixing.
3. Reusability -> A solution that works well once can be adaptable to another situation so thus recyclable in transplantation when encountering a problems that requires immediate actions.

How to design algorithm ?

In a broad sense, many algorithms approach problems in the same way. Thus, it is often convenient to classify them based on the proceedings they employ. One reason to classify algorithms in this way is that often we can gain some insight about an algorithm if we understand its general path. This can also give us ideas about how to look at similar problems for which we do not know algorithms. Of course, some algorithms defy classification, whereas others are based on a combination of approaches. Here a re some to say the least:

-> Randomized Algorithms

-> Divide-and-conquer-Algorithms

-> Greedy Algorithms

Each of them will be the object of an up coming article where we will be focusing in great details on how they work and how to use them smartly to structure our data.