﻿ C exercises: Selection sort algorithm - w3resource

C Exercises: Selection sort algorithm

C Programming Searching and Sorting Algorithm: Exercise-2 with Solution

Write a C program to sort a list of elements using the selection sort algorithm.

According to Wikipedia “In computer science, selection sort is a sorting algorithm, specifically an in-place comparison sort. It has O(n2) time complexity, making it inefficient on large lists, and generally performs worse than the similar insertion sort”.

Note:
a) To find maximum of elements
b) To swap two elements

Pictorial presentation - Selection search algorithm :

Sample Solution:

Sample C Code:

``````#include <stdio.h>
void main()
{
int arr[10];
int i, j, N, temp;
/* function  declaration */
int find_max(int  b[10], int k);
void exchang(int  b[10], int k);
printf("\nInput no. of values in the array : ");
scanf("%d",&N);
printf("\nInput  the elements one by one: ");
for(i=0; i<N ;  i++)
{
scanf("%d",&arr[i]);
}
/* Selection sorting  begins */
exchang(arr,N);
printf("Sorted  array :\n");
for(i=0; i< N ;  i++)
{
printf("%d\n",arr[i]);
}
}
/* function to find the maximum value */
int find_max(int b[10], int k)
{
int max=0,j;
for(j = 1; j <=  k; j++)
{
if ( b[j] >  b[max])
{
max =  j;
}
}
return(max);
}
void exchang(int  b[10],int k)
{
int  temp, big, j;
for ( j=k-1;  j>=1; j--)
{
big =  find_max(b,j);
temp = b[big];
b[big] = b[j];
b[j] = temp;
}
return;
}
```
```

Flowchart:

C Programming Code Editor:

```#include <stdio.h>
void main()
{
int arr[10];
int i, j, N, temp;
/* function  declaration */
int find_max(int  b[10], int k);
void exchang(int  b[10], int k);
printf("\nInput no. of values in the array : ");
scanf("%d",&N);
printf("\nInput  the elements one by one : ");
for(i=0; i<N ;  i++)
{
scanf("%d",&arr[i]);
}
/* Selection sorting  begins */
exchang(arr,N);
printf("Sorted  array :\n");
for(i=0; i< N ;  i++)
{
printf("%d\n",arr[i]);
}
}
/* function to find the maximum value */
int find_max(int b[10], int k)
{
int max=0,j;
for(j = 1; j <=  k; j++)
{
if ( b[j] >  b[max])
{
max =  j;
}
}
return(max);
}
void exchang(int  b[10],int k)
{
int temp, big, j;
for ( j=k-1;  j>=1; j--)
{
big =  find_max(b,j);
temp = b[big];
b[big] = b[j];
b[j] = temp;
}
return;
}
```

Improve this sample solution and post your code through Disqus.