An algorithm is a sequence of finite instructions, frequently used for calculations and data processing. It is a type of method in which a list of instructions for completing a task will, when given an initial state, proceed through a well-defined series of successive states, eventually terminating in an end state.

In making a diagnosis, a step by step method of solving a problem or making decisions, There are some characteristics that every algorithms online training should follow and which deals with various aspects of the algorithm.

They are as follows:

- Input specified
- Output specified
- Definiteness
- Effectiveness
- Finiteness
- Independent
- Feasible

Let us see these characteristics :

**Input specified**

- During the computation to produce the output, the input is the data to be transformed.
- Which data do you need to begin to get the result you want?
- Input precision requires that you know what kind of data, how much the data and what form the data should be and
- An algorithm should have 0 or well-defined inputs.

**Output specified**

- The output is the data arising from the computation
- Constantly the name of the algorithm contains the output:
- “Algorithm to compute bashing average”.
- Output precision requires that you know what kind of data, how much, and what form the output should be.
- An algorithm should have 1 or defined outputs and should match the desired output.

**Definiteness**

- Algorithms must specify each and every step and the order the steps must be taken in the process.
- Definiteness means identifying the sequence of operations for turning into output.
- Details of each step must also be spelled out (how to handle error).
- The algorithm should be clear and ambiguous.
- It should contain everything quantitative and not qualitative.

**Effectiveness**

- For an effective algorithm, it means that all those steps that are required to get to output MUST BE DOABLE!
- All outputs must be feasible with the available resources.
- It should not contain any unnecessary and essential steps which could make an algorithm ineffective.

**Finiteness**

- The algorithm must stop eventually!
- Finiteness is not an issue for non-computer algorithms.
- Stopping may mean that you get the anticipated output or you get a response that no solution is possible.
- Computer algorithms often rely on instructions with different data and finiteness may be a problem.
- An algorithm must conclude after a limited number of steps.
- An algorithm should not be infinite and always terminate after a definite number of steps.

**Independent**

- An algorithm should have step by step directions, which should be autonomous of any programming code.
- It should be such that it could be run on any of the programming languages.
- Thus these are the attributes that an algorithm should have for its fruitfulness.

**Feasible**

- The algorithm must be simple, genric, and practical, such that it can be executed upon the available resources.
- It must not contain some future automation or anything.

**Complexity of algorithm**

It is very easy to classify algorithms training based on the relative amount of and space they require and specify the growth of time/ space requirements as a function of the input size. Thus we have the notions of:

**Time complexity:**Running time of the program as a function of the size of the output.**Space complexity:**during the program execution amount of computer memory required, as a function of the input size.