C Program for Bubble Sort

How do you write a program to sort an array using Bubble Sort in C with a practical example? The below 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

Here, For Loop will make sure that the number is between 0 and the 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 the 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 increment by 1.

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

C Program for Bubble Sort using While Loop

This program of bubble sort is the same as above. However, we replaced the for loop with the 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 	

C Program for Bubble Sort using Pointers

In this bubble sort program example, we created an extra function and used Pointers to swap two numbers. The remaining is the 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