sorting array elements in ascending and descending order in C++

In this page, we will array elements in ascending and descending order,

In the program, the size of the array-variable is given 10, so it can store a maximum of 10 elements at a time which will be input by the user.

let’s start,


sorting array-element in ascending order

Here is the program,

#include<iostream.h>
#include<conio.h>

void main()
{
clrscr();
int arr[10],size,i;

cout<<"Enter the size of Array: ";
cin>>size;

cout<<"Enter the element in the Array\n";
for(i=0;i<size;i++)
{
  cin>>arr[i];
}
 // display entered element 
cout<<"Before Sorting Entered Element Are\n";
for(i=0;i<size;i++)
  cout<<arr[i]<<"\t";

 // sorting process begin
int temp;  // declare third variable for swapping

for(i=0;i<size;i++)   //outer-loop
{
   for(int j=0;j<=size;j++)  //inner-loop
    {
       if(arr[i]<arr[j]) // represent second element in the array list
        {
            temp = arr[i];    // first array element assign to variable temp
            arr[i] = arr[j]; // second element assigning to first element
            arr[j] = temp; // variable temp (means first element) assigning to second element
        }
     }
}

 // display sorting element
cout<<"\nAfter Sorting Entered Element Are\n";

for(int i=0;i<size;i++)
   cout<<arr[i]<<" ";

getch();
}
OUTPUT:-
Enter the size of Array:5

Enter the element in the Array
8   
7  
2
1     
4

Before Sorting Entered Element Are  
8       7       2       1       4  

After Sorting Entered Element Are  
1       2       4       7       8 
                                                                                

explanation

In the program, the size of the array-variable is given 10, so it can store a maximum of 10 elements at a time which will be input by the user.

Suppose the user has given the size of the array 5, so 5 elements will be stored in this way,

arr[0] = 8 
arr[1] = 7 
arr[2] = 2
arr[3] = 1 
arr[4] = 4

Now after this, the sorting process will start.

We have used two loops to sort the array elements into ascending order. Where the first array-elements will be accessed from the first-loop, while all the elements of the array from the second-loop will be compared to its first element.
here first-loop called outer-loop and second inner-loop, in the program array element will be sort as follows,

sorting-array-element-in-cpp


interested in more, these loop will work as follows where variable belong to outer-loop and variable j belong to inner-loop,

i =0, j = 0 size = 5
8    7    2     1    4

for(i = 0; 0 < 5; 0++) // outer loop
{
   for(int j = 0; 0 <= 5; 0++) // inner loop
   {
      if(arr[0] < arr[0])          // 8<8 8<7 8<2 8<1 8<4 all time condition becoming false 
       {                                     // so after inner-loop execution will go to outer-loop
          temp = arr[0]; 
          arr[0] = arr[1]; 
          arr[1] = temp; 
       }
    }
}

here will be no changes in array-element, means it will be same as before,

   8      7      2     1       4 
arr[0] arr[1] arr[2] arr[3] arr[4]

now i =1, j = 0 size = 5

for(i = 1; 1 < 5; 1++)
{
   for(int j = 0; 0 <= 5; 0++)
    {
       if(arr[1] < arr[0]) // 7<8 condition true
        {
           temp = arr[1]; // temp = 7
           arr[1] = arr[0]; // arr[1]=8
           arr[0] = temp; // 7
         }
    }
}

here we swap element 8 and 7 so,

   7      8      2      1      4 
arr[0] arr[1] arr[2] arr[3] arr[4]

now again inner-loop will execute but in if-statement condition become false such as,

outer < inner-loop

arr[1] < arr[1] // 7<7 
arr[1] < arr[2] // 7<2 
arr[1] < arr[3] // 7<1
arr[1] < arr[4] // 7<4

so after inner-loop, execution will go to outer-loop

this time values will be i = 2, j = 0 size = 5

for(i = 2; 2 < 5; 2++) //outer-loop
{
   for(int j = 0; 0 <= 5; 0++) //inner-loop
    { 
       if(arr[2] < arr[0]) // 2<7 true
        {
          temp = arr[2]; // temp = 2
          arr[2] = arr[0]; // arr[2]=7
          arr[0] = temp; // 2
         }
     }
}

here we swap element 7 and 2 so array,

  2       8      7     1       4 
arr[0] arr[1] arr[2] arr[3] arr[4]

now again inner-loop will execute but remember here i=2, j = 1

for(int j = 1; 1 <= 5; 1++) //inner-loop
{
   if(arr[2] < arr[1]) // 7<8 true
    {
       temp = arr[2]; // temp = 7
       arr[2] = arr[1]; // arr[2]=8
       arr[1] = temp; // 7
    }
 }

here we swap element 8 and 7 so array,

   2      7      8     1       4 
arr[0] arr[1] arr[2] arr[3] arr[4]

inner-loop will execute again but in if-statement condition becoming false such as,

outer < inner-loop

arr[2] < arr[2] 8<8 
arr[2] < arr[3] 8<1 
arr[2] < arr[4] 8<4

so after inner-loop execution will go to outer loop

now this time values will be i = 3, j = 0 size = 5

for(i = 3; 3 < 5; 3++) //outer-loop
{
   for(int j = 0; 0 <= 5; 0++) //inner-loop
    { 
      if(arr[3] < arr[0]) // 1<2 true
       {
          temp = arr[3]; // temp = 1
          arr[3] = arr[0]; // arr[2]=2
          arr[0] = temp; // 1
        }
     }
}

here we swap element 2 and 1 so array,

   1      7      8      2      4 
arr[0] arr[1] arr[2] arr[3] arr[4]

now again inner-loop will execute but remember here only variable j value will be increase i=3, j = 1

for(int j = 1; 1 <= 5; 1++) //inner-loop
{
  if(arr[3] < arr[1]) // 2<7 true
   {
      temp = arr[3]; // temp = 2
      arr[3] = arr[1]; // arr[2]=7
      arr[1] = temp; // 2
   }
}

here we swap element 7 and 2 now array,

   1      2      8      7     4 
arr[0] arr[1] arr[2] arr[3] arr[4]

and again inner-loop will execute,and this time value of variable j will be j =2 and variable i value will be same

for(int j = 2; 2 <= 5; 2++) //inner-loop
{
  if(arr[3] < arr[2]) // 7<8 true
   { 
     temp = arr[3]; // temp = 7
     arr[3] = arr[2]; // arr[2]=8
     arr[2] = temp; // 7
   }
}

here we swap element 8 and 7 so array now will be,

   1      2      7     8      4 
arr[0] arr[1] arr[2] arr[3] arr[4]

and again inner-loop will going to be execute but this in if-statement condition becoming false such as,

arr[3] < arr[3] 8<8

so nothing will be implement and execution will go to outer-loop

now value i =4, j = 0 , n = 5

for(i = 4; 4 < 5; 4++) //outer-loop
{
  for(int j = 0; 0 <= 5; 0++) //inner-loop
   {
      but here in if-statement first two condition false 
      arr[4] < arr[0] 4<1 //false
      arr[4] < arr[1] 4<2 // false 

but when variable j value become 2 then condition will be true, 

      if(arr[4] < arr[2]) // 4<7 true
       {
         temp = arr[4]; // temp = 4
         arr[4] = arr[2]; // arr[2]=7
         arr[2] = temp; // 4
       }
   }
}

here we swap element 7 and 4, now array

   1      2     4      8      7 
arr[0] arr[1] arr[2] arr[3] arr[4]

and again inner-loop will execute,and this time i=4, j = 3 so

for(int j = 4; 4 <= 5; 4++) //inner-loop
{
  if(arr[4] < arr[3]) // 7<8 true
   {
      temp = arr[4]; // temp = 7
      arr[4] = arr[3]; // arr[2]=8
      arr[3] = temp; // 7
   }
}

in last, we swap element 8 and 7

   1      2     4      7       8 
arr[0] arr[1] arr[2] arr[3] arr[4]

thus this loop will implement and we get sorted element,

sorting array-element in descending order

ascending to descending order we only change operator < to > in if statement and other statements will be same as above program,

for(i=0;i<n;i++)
{
 for(int j=0;j<n;j++)
 {
  if(arr[i]>arr[j]) // arr[i+1] represent second element in the array list
  {
    temp = arr[i];    // first array element assign to variable temp
    arr[i] = arr[j]; // second element assigning to first element
    arr[j] = temp; // variable temp (means first element) assigning to second element
  }
 }
}