Problem
What are the different sorting techniques in C Language? Explain any one sorting technique with an example.
Solution
C language provides five sorting techniques, which are as follows −
- Bubble sort (or) Exchange Sort.
- Selection sort.
- Insertion sort (or) Linear sort.
- Quick sort (or) Partition exchange sort.
- Merge Sort (or) External sort.
Bubble sort
It is the simplest sorting technique which is also called as an exchange sort.
Procedure
Compare the first element with the remaining elements in the list and exchange(swap) them if they are not in order.
Repeat the same for other elements in the list until all the elements gets sorted.
30 50 40 10 20
Consider the elements given below −
First pass
Compare first element with the remaining elements.
a[0] > a[1] $\square$ $\square$30 >50 (F) $\square$ $\square$no exchange
a[0] > a[2] $\square$ $\square$ 30 >40 (F) $\square$ $\square$ no exchange
a[0] > a[3] $\square$ $\square$ 30 >10 (T) $\square$ $\square$ exchange
a[0] > a[4] $\square$ $\square$ 10>20 (F) $\square$ $\square$ no exchange
10 50 40 30 20
Second Pass
Compare second element with the remaining elements.
a[1] > a[2] $\square$ $\square$ 50 >40 (T) $\square$ $\square$ exchange
a[1] > a[3] $\square$ $\square$ 40 >30 (T) $\square$ $\square$ exchange
a[1] > a[4] $\square$ $\square$ 30 >20 (T) $\square$ $\square$ exchange
10 20 50 40 30
Third Pass
Compare third element with the remaining elements.
a[2] > a[3] $\square$ $\square$ 50 >40 (T) $\square$ $\square$ exchange
a[2] > a[4] $\square$ $\square$ 40 >30 (T) $\square$ $\square$ exchange
10 20 30 50 40
Fourth Pass
Compare fourth element with the remaining elements.
a[3] > a[4] $\square$ $\square$ 50 >40 (T) $\square$ $\square$ exchange
10 20 30 40 50
Procedure
Refer the procedure for bubble sort as given below −
for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++){ if (a[i] > a[j]){ t=a[i]; a[i] = a[j]; a[j] = t; } } }
Example
Following is the C program for bubble sorting technique −
#include<stdio.h> int main(){ int a[50], i,j,n,t; printf("enter the No: of elements in the list:\n"); scanf("%d", &n); printf("enter the elements:\n"); for(i=0; i<n; i++){ scanf ("%d", &a[i]); } printf("Before bubble sorting the elements are:\n"); for(i=0; i<n; i++) printf("%d \t\n", a[i]); for (i=0; i<n-1; i++){ for (j=i+1; j<n; j++){ if (a[i] > a[j]){ t = a[i]; a[i] = a[j]; a[j] = t; } } } printf ("after bubble sorting the elements are:\n"); for (i=0; i<n; i++) printf("%d\t", a[i]); return 0; }
Output
When the above program is executed, it produces the following result −
enter the No: of elements in the list: 5 enter the elements: 12 11 45 26 67 Before bubble sorting the elements are: 12 11 45 26 67 after bubble sorting the elements are: 11 12 26 45 67