### Introduction

Selection sort is one of the simplest sorting techniques.Sorting Techniques are mostly used in Highscore calculation program

**.I have made it more efficient by adding a line in standard selection sort code**
### Background

Selection sort is sorting technique with a simple logic.

Consider the following example:

**Problem:**We have a array on 10 numbers we have to arrange them in ascending order using selection sort.Array is 4,3,6,5,8,1,9,0,2,7

**Solution:**
Iteration 1:We select the first element 4 and swap it with the smallest element in array '0'.

Array after iteration 1:0,3,6,5,8,1,9,4,2,7

Iteration 2:Discard first element as it is sorted now select second element swap it with the first element i.e swap 3 with 1.This process continues until array is sorted.

Array after iteration 2:0,1,6,5,8,3,9,4,2,7

Array after iteration 3:0,1,2,5,8,3,9,4,6,7

Array after iteration 4:0,1,2,3,8,5,9,4,6,7

Array after iteration 5:0,1,2,3,4,5,9,8,6,7

Array after iteration 6:0,1,2,3,4,5,9,8,6,7[If the element consideres is smallest it reamins there here 5 remains at same place]

Array after iteration 7:0,1,2,3,4,5,6,8,9,7

Array after iteration 8:0,1,2,3,4,5,6,7,9,8

Array after iteration 9:0,1,2,3,4,5,6,7,8,9

Note that for selection sort there are n-1 iteration where n is the number of elements

The Line I added in the code from standard code makes it more efficient for longer arrays

### The code

In This example I have used templates It sorts variables of different data types

Code:

`//selection sort`

#include<iostream.h>

#include<conio.h>

template<class T>

void selectsort(T a[],int size)

{

T temp,small;

int pos,i,j,k;

for(i=0;i<size;i++)

{

pos=i;\\I have found his all important line mssing in many standard books

small=a[i];

for(j=i+1;j<size;j++)

{

if(a[j]<small)

{

small=a[j];

pos=j;

}

}

temp=a[i];

a[i]=a[pos];

a[pos]=temp;

cout<<"The array after iteration- "<<i+1<<" is ";

for(k=0;k<size;k++)

cout<<a[k]<<" ";

cout<<"\n";

}

}

void main()

{

clrscr();

cout<<"\t SELECTION SORT PROGRAM\n";

int a[50],size,choice,i;

char b[50];

float c[50];

start:

cout<<"Enter size of array\n";

cin>>size;

cout<<"Enter type of array\n1.Character\n2.Integer\n3.Float\n";

cin>>choice;

switch(choice)

{

case 1:

cout<<"Enter elements of character array\n";

for(i=0;i<size;i++)

cin>>b[i];

selectsort(b,size);

cout<<"Enter the character array is\n";

for(i=0;i<size;i++)

cout<<b[i]<<" ";

break;

case 2:

cout<<"Enter elements of integer array\n";

for(i=0;i<size;i++)

cin>>a[i];

selectsort(a,size);

cout<<"Enter the integer array is\n";

for(i=0;i<size;i++)

cout<<a[i]<<" ";

break;

case 3:

cout<<"Enter elements of float array\n";

for(i=0;i<size;i++)

cin>>c[i];

selectsort(b,size);

cout<<"Enter the character array is\n";

for(i=0;i<size;i++)

cout<<b[i]<<" ";

break;

default:

cout<<"Invalid choice\n";

goto start;

}

}