C Program to Sort the Array in Descending Order


This is a C Program to sort an array in descending order.

Problem Description

This program will implement a one-dimentional array of some fixed size, filled with some random numbers, then will sort all the filled elements of the array.

Problem Solution

1. Create an array of fixed size (maximum capacity), lets say 10.
2. Take n, a variable which stores the number of elements of the array, less than maximum capacity of array.
3. Iterate via for loop to take array elements as input, and print them.
4. The array elements are in unsorted fashion, to sort them, make a nested loop.
5. In the nested loop, the each element will be compared to all the elements below it.
6. In case the element is smaller than the element present below it, then they are interchanged
7. After executing the nested loop, we will obtain an array in descending order arranged elements.

Program/Source Code

Here is source code of the C program to sort the array in an descending order. The program is successfully compiled and tested using Turbo C compiler in windows environment. The program output is also shown below.

  1.    /*
  2.     * C program to accept a set of numbers and arrange them
  3.     * in a descending order
  4.     */
  6.     #include <stdio.h>
  7.     void main ()
  8.     {
  10.         int number[30];
  12.         int i, j, a, n;
  13.         printf("Enter the value of N\n");
  14.         scanf("%d", &n);
  16.         printf("Enter the numbers \n");
  17.         for (i = 0; i < n; ++i)
  18. 	        scanf("%d", &number[i]);
  20.         /*  sorting begins ... */
  22.         for (i = 0; i < n; ++i) 
  23.         {
  24.             for (j = i + 1; j < n; ++j) 
  25.             {
  26.                 if (number[i] < number[j]) 
  27.                 {
  28.                     a = number[i];
  29.                     number[i] = number[j];
  30.                     number[j] = a;
  31.                 }
  32.             }
  33.         }
  35.         printf("The numbers arranged in descending order are given below\n");
  37.         for (i = 0; i < n; ++i) 
  38.         {
  39.             printf("%d\n", number[i]);
  40.         }
  42.     }
Program Explanation

1. Declare an array of some fixed capacity, lets say 30.
2. From users, take a number N as input, which will indicate the number of elements in the array (N <= maximum capacity)
3. Iterating through for loops (from [0 to N) ), take integers as input from user and print them. These input are the elements of the array.
4. Now, create a nested for loop with i and j as iterators.
5. Start the sorting in descending order by extracting each element at position i of outer loop.
6. This element is being compared to every element from position i+1 to size-1 (means all elements present below this extracted element)
7. In case any the extracted element is smaller than the element below it, then these two interchange their position, else the loop continues.
8. After this nested loop gets executed, we get all the elements of the array sorted in descending order.

Runtime Test Cases
Enter the value of N
Enter the numbers
The numbers arranged in descending order are given below

Sanfoundry Global Education & Learning Series – 1000 C Programs.

Here’s the list of Best Reference Books in C Programming, Data Structures and Algorithms.


Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He is Linux Kernel Developer & SAN Architect and is passionate about competency developments in these areas. He lives in Bangalore and delivers focused training sessions to IT professionals in Linux Kernel, Linux Debugging, Linux Device Drivers, Linux Networking, Linux Storage, Advanced C Programming, SAN Storage Technologies, SCSI Internals & Storage Protocols such as iSCSI & Fiber Channel. Stay connected with him @ LinkedIn