×

Selection sort in C

In the C standard, the selection sorting technique exists where the smallest among the unsorted elements of the array is selected at each time and is then inserted into its appropriate place within the array.

Selection sort iterated through the array and only then finds the smallest element within the iterated array and swaps it with the first element within the list if it is smaller when compared to the first element.

In the next step, it again iterated throughout the array and got the second element and this process repeated until all the elements are sorted.

Selection sort in the C programming language is considered as the assaulting algorithm which works by finding the smallest number from the array and then replacing it to the very first position in the array.

The next array that is to be traversed will then start from the index position to the next position where the smallest of the elements is placed.

Consider an example where the array ‘arr’ consists of ‘n’ number of elements. It needs to be sorted by making use of ‘n-1’ selection passes.

  • Pass the smallest element present within the array when found along with its index ‘position’. After doing so, then swap the arr[0] and arr[position]. This will make sure that arr[0] is sorted and we will be left with ‘n-1’ number of elements that needs to be sorted.
  • After the first step, during the second pass, position of the smallest element present in the subarray arr[n - 1] will be selected. After doing so, then swap the arr[1] and arr[position]. This will make sure that arr[0] and arr[1] is sorted and we will be left with ‘n - 2’ number of elements that needs to be sorted.
  • In the n - 1th pass present, the position of the smaller element will be between the index numbers arr[n - 1] and arr[n - 2] which needs to be found. Then later swap the arr[position] and arr[n - 1].

Therefore, by following the above explained process, the elements arr[0], arr[1], arr[2],...., arr[n-1] are sorted.

Algorithm for selection sort:

  • Find the minimum element in the array and swap it with the element in the 1st position.
  • Find the minimum element again in the remaining array[2, n] and swap it with the element at 2nd position. Now we have two elements at their correct positions.
  • We have to do this n-1 times to sort the array.

E.g.:

#include<stdio.h>  
int smallest(int[],int,int);  
void main ()  
{  
int a[10] = {10, 9, 7, 101, 23, 44, 12, 78, 34, 23};  
int i,j,k,pos,temp;  
for(i=0;i<10;i++)  
{  
pos = smallest(a,10,i);  
temp = a[i];  
a[i]=a[pos];  
a[pos] = temp;  
}  
printf("\n Printing the sorted elements using selection sort \n");  
for(i=0;i<10;i++)  
{  
printf("%d\n",a[i]);  
}  
}  


int smallest(int a[], int n, int i)  
{  
int small,pos,j;  
small = a[i];  
pos = i;  
for(j=i+1;j<10;j++)  
{  
if(a[j]<small)  
{  
small = a[j];  
pos=j;  
}  
}  
return pos;  
} 

Output:

Printing the sorted elements using selection sort:
7
9
10
12
23
23
34
44
78
101

Time complexities:

  • Worst case complexity: if we want to sort in ascending order and the array is in descending order then, the worst case occurs. It equates to O(n2)
  • Best case complexity: best case always occurs when the array is already sorted. It equates to O(n2)
  • Average case complexity: It occurs when the elements of the array are in jumbled order that is either ascending order or descending order. It equates to O(n2)

The time complexity is always the same in all three cases. At each and every step, one has to find the minimum element and should put it in the correct position.

The least or the minimum element is not known until the end of the array is reached.

Space complexity:

Space complexity is always O(1) as the temporary variable is used.

Applications:

  • Selection sort is used when a small list needs to be sorted.
  • It is opted when the cost of swapping does not matter.
  • It can also be used when the checking of all the elements is necessary
  • The cost of writing the memory matters such as the flash memory.

Related Topics

Pointers in C

Pointers in C: In the C programming language, a pointer is a pointer variable that points to the address of the other variable. It also stores the address of the...

4 minutes read.

Loop Statement in C

Loop statement is used to execute one or more statement repeatedly multiple times. There are three types of loops in C language. Why use loop? We can use loop because it executes a...

2 minutes read.

Two-Dimensional array in C

What is an Array? The collection of a fixed number of elements of homogeneous data types that are stored in contiguous locations in the memory is known as an array. Only...

6 minutes read.

Merge and Merge sort with example in C

Assume we have two ordered Integer arrays, a[] and b[]. If we wish to combine them into another ordered array, such as c[], we can use the following straightforward technique. Compare...

3 minutes read.

Free() Function in C

Free() function is a built-in function which is define in the stdlib.h header file. If we want to use this function in our program, we must include the stdlib.h header...

4 minutes read.

memmove() in C

Introduction: In this article we are discuss about the memmove() function in C. This function transfers memory blocks from one location to another. The memmove() function is declared in the...

3 minutes read.

Stack implementation in C

Stack implementation in C Stack stores the data in a particular order. It is a linear data structure that follows the principle of the Last In First Out (LIFO) technique where...

3 minutes read.

Prime Number Program in C using for Loop

In this article, we will know about the procedure of checking whether a natural number inputted by the user is a prime number or non-prime number. Definition of the prime number A...

3 minutes read.

C pre-processor

The C processor is a macro processor which is used to compile the source code of the program (step by step) . It is not a part of the compiler....

4 minutes read.

Star Program in C Language

Star Program in C Star patterns are a sequence of * or any other character used to construct any pattern or any like-square geometric form, triangle, hollow square, pyramid, rhombus, etc.  Many programmers worldwide highly...

4 minutes read.

Remove an element from an array in C

A collection of objects or pieces of the same data type stored in a single memory block is known as an array. A data structure called an array is used...

3 minutes read.

Booleans in C

Introduction to Boolean With all the complexities of programming, it can take time to understand the basics. One concept, in particular, that confuses many beginners is the use of Booleans in...

6 minutes read.

Control statement in C

What is a control statement? A control statement helps us to control the flow of the program. The control statement helps us to execute the program's instructions in a user-defined order....

8 minutes read.

C program to Store Information of Students Using Structure

What is the Structure in C? User-defined data types include structures. Structures aid your ability to combine things of various categories into a single group. Like arrays, it operates similarly. A...

3 minutes read.

Memory leak in C

What is memory leak in C? Memory leak occurs when we keep allocating memory in the heap without freeing it, i.e., the allocated memory in heap is not released back to...

3 minutes read.

C Program of Fencing the Ground

The college's ground is rectangular. Fencing the ground the management makes the decision to construct a fence around the ground. They planned to wrap a thick rope around the ground...

1 minute read.

How to convert a number to words in C

There are many ways available for converting an integer or a number to its word form. For example, consider a number as 12345. This number can be represented in two...

3 minutes read.

How to Calculate Time Complexity in C?

What is time complexity? An algorithm's time complexity measures how long it takes to complete a task in relation to the size of the input. It should be noted that the...

5 minutes read.

Bank Account System in C using File Handling

This tells about the creation of bank account system using the C language and handling of files in C. Approach Let us see the approaches and the functions how they are covering...

5 minutes read.

Call Back Function in Embedded C

Callback function are one the most remarkable systems in C. A callback function is any code that is passed as a contention to another code, so this is the last...

3 minutes read.