C Program for Bubble Sort

How to write a Program to Sort Array using Bubble sort in C with a practical example?.

C Program for Bubble Sort using For Loop

This program for bubble sort uses the Nested For Loop to sort the One Dimensional Array elements in ascending order.

#include <stdio.h>
int main()
{
    int a[100], number, i, j, temp;
    
    printf("\n Please Enter the total Number of Elements  :  ");
    scanf("%d", &number);
    
    printf("\n Please Enter the Array Elements  :  ");
    for(i = 0; i < number; i++)
        scanf("%d", &a[i]);

    for(i = 0; i < number - 1; i++)
    {
        for(j = 0; j < number - i - 1; j++)
        {
            if(a[j] > a[j + 1])
            {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
    printf("\n List Sorted in Ascending Order : ");
    for(i = 0; i < number; i++)
    {
        printf(" %d \t", a[i]);
    }
    printf("\n");
    return 0;
}
C Program for Bubble Sort 1

Here, For Loop will make sure that the number is between 0 and maximum size value of One Dimensional Array.

First For Loop – First Iteration: for(i = 0; 0 < 4; 0++)
The condition is True so that it will enter into second for loop

Second For Loop – First Iteration: for(j = 0; 0 < 5-0-1; 0++)
Condition inside the For Loop is True. So, the compiler will enter into the If Statement
if(a[0] > a[1]) => if(10 > -14) – It means Condition is True
temp = 10
a[j] = a[j + 1] => a[0] = a[1] => a[0] = -14
a[j + 1] = temp => a[1] = 10
Now the array will be  -14 10 25 6 25. Next, j will be increment by 1.

Second For Loop – Second Iteration: for(j = 1; 1 < 5 – 0 – 1; 1++)
For Loop condition is True, and the compiler will enter into If Statement
if(10 > 25) – It means condition is False. Do the same for the remaining C Programming Iterations

Bubble Sort using While Loop

This program of bubble sort in c is the same as above. However, we replaced the for loop with While Loop to organize array elements using bubble sort

#include <stdio.h>
int main()
{
    int a[100], number, i, j, temp;
    
    printf("\n Please Enter the total Number of Elements  :  ");
    scanf("%d", &number);
    
    printf("\n Please Enter the Array Elements  :  ");
    for(i = 0; i < number; i++)
        scanf("%d", &a[i]);

    i = 0;
    while(i < number - 1) {
        j = 0;
        while(j < number - i - 1) {
            if(a[j] > a[j + 1]) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
            j++;
        }
        i++;
    }
    printf("\n List in Ascending Order : ");
    for(i = 0; i < number; i++)
        printf(" %d \t", a[i]);
    printf("\n");
    return 0;
}
Please Enter the total Number of Elements  :  6

 Please Enter the Array Elements  :  10 20 -30 20 5 15

 List in Ascending Order :  -30 	 5 	 10 	 15 	 20 	 20 	

C Bubble Sort Program using Functions

This bubble sort program is the same as the first example. Still, we separated the logic to organize array elements by bubble sort using Functions.

#include <stdio.h>
void bubFunc(int a[], int number) {
    int i, j, temp;
    for(i = 0; i < number - 1; i++) {
        for(j = 0; j < number - i - 1; j++) {
            if(a[j] > a[j + 1]) {
                temp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = temp;
            }
        }
    }
}

int main()
{
    int arr[100], size, i;
    
    printf("\n Please Enter the total Elements  :  ");
    scanf("%d", &size);
    
    printf("\n Please Enter the Array Elements  :  ");
    for(i = 0; i < size; i++)
        scanf("%d", &arr[i]);
    
    bubFunc(arr, size);
    printf("\n List in Ascending Order : ");
    for(i = 0; i < size; i++)
    {
        printf(" %d \t", arr[i]);
    }
    printf("\n");
    return 0;
}
 Please Enter the total Elements  :  4

 Please Enter the Array Elements  :  3 -2 1 0

 List in Ascending Order :  -2 	 0 	 1 	 3 	

Bubble Sort in C using Pointers

In this bubble sort program example, we created an extra function and used Pointers to swap two numbers. Remaining is same as above

#include <stdio.h>
void Swap(int *x, int *y)
{
    int Temp;
    Temp = *x;
    *x = *y;
    *y = Temp;
}
void bubFunc(int a[], int number) {
    int i, j, temp;
    for(i = 0; i < number - 1; i++) {
        for(j = 0; j < number - i - 1; j++) {
            if(a[j] > a[j + 1]) {
                Swap(&a[j], &a[j + 1]);
            }
        }
    }
}
int main()
{
    int arr[100], size, i;
    
    printf("\n Please Enter the total Elements  :  ");
    scanf("%d", &size);
    
    printf("\n Please Enter the Array Elements  :  ");
    for(i = 0; i < size; i++)
        scanf("%d", &arr[i]);
    
    bubFunc(arr, size);
    printf("\n Array in Ascending Order : ");
    for(i = 0; i < size; i++)
    {
        printf(" %d \t", arr[i]);
    }
    printf("\n");
    return 0;
}
 Please Enter the total Elements  :  6

 Please Enter the Array Elements  :  10 20 30 -12 20 5

 Array in Ascending Order :  -12 	 5 	 10 	 20 	 20 	 30