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```