An algorithm is a process to solve a particular problem. Let’s explore!

**Our topics: During this article, we are going to study what’s an algorithm? Example of algorithms and why we use algorithms what are the advantages and disadvantages of algorithms? What are the varied properties of an algorithm? What is the performance analysis of an algorithm?**

**What are the algorithms?**

The word Algorithm means a step-by-step procedure, which defines a group of instructions to be executed in a certain order to perform a particular task.

**In other words, we can say that,**

- Step by step process for solving problems is known as an algorithm.
- An algorithm may be a sequence of steps that transform the input into a valuable and required output.
- Any special method of solving a problem is known as an algorithm.

**For example:**

In order to Cook a new recipe. One reads the instructions and steps and execute them one by one, within the given sequence. The result thus obtained is that the new dish cooked perfectly. Similarly, algorithms help to do a task in programming to urge the expected output.

**Why we use algorithms?**

We use algorithms because it helps us to know if a problem is solvable or not. If yes, then how can we solved, this problem how fast and how accurate? If not, then an algorithm again helps us decide, if we will solve a section of it or not they need to be used wisely and an honest algorithm that’s efficient in terms of your time complexities and space complexities will assist you to do so.

**What are the advantages of Algorithms?**

- It is a step by step representation of an answer to a given problem, which makes it easy to know.
- It is not hooked into any programming language, so it’s easy to know for anyone even without programming knowledge.
- Every step of an algorithm has its own sequence so it’s easy to debug.
- An algorithm problem is divided into smaller steps so, it’s easier for programmers to convert it into a program.

**What are the disadvantages of Algorithms?**

- Algorithms are Time-consuming.
- Difficult to point out Branching and Looping in Algorithms

**What are the properties of an algorithm?**

**Input**

The inputs used in an algorithm must originate from a specific set of elements, where the amount sort of data sources of inputs are specified.

**Output**

The algorithm must create the output values from a specified set of input values. The output values are the solution to problems.

**Definiteness**

Definiteness means specifying the sequence of operations for turning an input into an output

**Effectiveness**

Each instruction must be basic enough to be completed theoretically or by using paper and pencil.

**Finiteness**

For any input, an algorithm must terminate after a finite number of steps

**What is the performance analysis of an algorithm? **

Performance analysis of an algorithm helps us to pick the best algorithm from multiple algorithms to resolve a specific problem.

In an algorithm, performance depends on two factors i.e. the quantity of the memory consumed and the amount of your time used by any CPU.

**The Need for Analysis**

Let suppose if you would like to travel from one place to another then there are often some ways of doing this. you’ll pass flight, by bus, or anything counting on the supply, we select the one which most accurately fits us. Similarly, in computing, there are multiple algorithms to unravel a drag. But we’d like to pick the simplest one to unravel the problem.

**For example **

We know that a group of numbers is often sorted using different algorithms. The number of comparisons performed by one algorithm may vary with others for an equivalent input. Hence, the time complexity of these algorithms may differ. At an equivalent time, we’d like to calculate the memory space required by each algorithm.

Formally, they’re notified as complexities in terms of:

**Space Complexity.**

Space required for completing the task of that algorithm. Space Complexity includes program space and data space.

**Time Complexity.**

Time Complexity is that the Time required finishing the task of an algorithm.