# 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 C program for bubble sort uses the Nested For Loop to sort the One Dimensional Array elements in ascending order.

```/* C Program for Bubble Sort */
#include <stdio.h>
int main()
{
int a, 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;
}```

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 > a) => if(10 > -14) – It means Condition is True
temp = 10
a[j] = a[j + 1] => a = a => a = -14
a[j + 1] = temp => a = 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, 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 	``````

## Bubble Sort using Functions

This bubble sort program in C 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, 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, 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 	``````