C Program to sort array in ascending order (Bubble Sort)

Data Structure Sorting (Article) Sorting (Program)

34

Given Input:



Expected Output:


                                    

Program:

<span class="tag">&lt;xmp&gt;</span><span class="pln">
/**
 * C program to sort elements of array in ascending order
 */

#include </span><span class="tag">&lt;stdio.h&gt;</span><span class="pln">
#define MAX_SIZE 100    // Maximum array size

int main()
{
    int arr[MAX_SIZE];
    int size;
    int i, j, temp;

    /* Input size of array */
    printf("Enter size of array: ");
    scanf("%d", &amp;size);

    /* Input elements in array */
    printf("Enter elements in array: ");
    for(i=0; i&lt;size; i++)
    {
        scanf("%d", &amp;arr[i]);
    }

    for(i=0; i&lt;size; i++)
    {
        /* 
         * Place currently selected element array[i]
         * to its correct place.
         */
        for(j=i+1; j</span><span class="tag">&lt;size</span><span class="pln">; </span><span class="atn">j</span><span class="pln">++)
        {
            </span><span class="pun">/</span><span class="pln">* 
             * </span><span class="atn">Swap</span><span class="pln"> </span><span class="atn">if</span><span class="pln"> </span><span class="atn">currently</span><span class="pln"> </span><span class="atn">selected</span><span class="pln"> </span><span class="atn">array</span><span class="pln"> </span><span class="atn">element</span><span class="pln">
             * </span><span class="atn">is</span><span class="pln"> </span><span class="atn">not</span><span class="pln"> </span><span class="atn">at</span><span class="pln"> </span><span class="atn">its</span><span class="pln"> </span><span class="atn">correct</span><span class="pln"> </span><span class="atn">position</span><span class="pln">.
             *</span><span class="pun">/</span><span class="pln">
            </span><span class="atn">if</span><span class="pln">(</span><span class="atn">arr</span><span class="pln">[</span><span class="atn">i</span><span class="pln">] </span><span class="tag">&gt;</span><span class="pln"> arr[j])
            {
                temp     = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }

    /* Print the sorted array */
    printf("\nElements of array in ascending order: ");
    for(i=0; i&lt;size; i++)
    {
        printf("%d\t", arr[i]);
    }

    return 0;
}</span>

Output:

Enter size of array: 9
Enter elements in array: 9 8 7 6 5 4 3 2 1

Elements of array in ascending order: 1 2 3 4 5 6 7 8 9 

Explanation:

Important note: With a small change in the program you can change the logic for descending order. Which means replace condition if(arr[i] > arr[j]) with if(arr[i] < arr[j])  to transform the logic for descending order.