Algorithm is a step-by-step procedure, which defines a set of instructions to be executed in a certain order to get the desired output.

Algorithms are generally created independent of underlying languages, i.e. an algorithm can be implemented in more than one programming language.

## Categories of Algorithms

From the data structure point of view, following are some important categories of algorithms:

**Search:**Algorithm to search an item in a data structure.**Sort:**Algorithm to sort items in a certain order.**Insert:**Algorithm to insert item in a data structure.**Update:**Algorithm to update an existing item in a data structure.**Delete:**Algorithm to delete an existing item from a data structure.

## Characteristics of Algorithm

Algorithm should have the following characteristics:

**Unambiguous:**Algorithm should be clear and unambiguous. Each of its steps (or phases), and their inputs/outputs should be clear and must lead to only one meaning.**Input:**An algorithm should have 0 or more well-defined inputs.**Output:**An algorithm should have 1 or more well-defined outputs, and should match the desired output.**Finiteness:**Algorithms must terminate after a finite number of steps.**Feasibility:**Should be feasible with the available resources.**Independent:**An algorithm should have step-by-step directions, which should be independent of any programming code.

## How to write algorithm?

There are no well-defined standards for writing algorithms. Rather, it is problem and resource dependent. Algorithms are never written to support a particular programming code.

As we know that all programming languages share basic code constructs like loops (do, for, while), flow-control (if-else), etc. These common constructs can be used to write an algorithm.

We write algorithms in a step-by-step manner, but it is not always the case. Algorithm writing is a process and is executed after the problem domain is well-defined. That is, we should know the problem domain, for which we are designing a solution.

## Examples

Let's try to learn algorithm-writing by using an example.

Problem - Design an algorithm to add two numbers and display the result.

Step 1 - START Step 2 - declare three integers a, b & c Step 3 - define values of a & b Step 4 - add values of a & b Step 5 - store output of step 4 to c Step 6 - print c Step 7 - STOP

Algorithms tell the programmers how to code the program. Alternatively, the algorithm can be written as:

Step 1 - START ADD Step 2 - get values of a & b Step 3 - c <- a + b Step 4 - display c Step 5 - STOP