w3resource

C Exercises: Rearrange an array in such an order that– smallest, largest, 2nd smallest, 2nd largest and on

C Array: Exercise-102 with Solution

Write a program in C to rearrange an array in such an order that– small, large, second smallest, second largest, etc.

Sample Solution:

C Code:

#include<stdio.h> 
void sort(int arr1[], int n) 
{ 
   int i, j,temp; 
   for (i = 0; i < n-1; i++)
	{   
       for (j = 0; j < n-i-1; j++)
       {
           if (arr1[j] > arr1[j+1])
           {
               temp = arr1[j]; 
               arr1[j] = arr1[j+1]; 
               arr1[j+1] = temp;
           }
       }
	}   
    return ;
} 
  
void rearrangeArray(int arr1[], int n) 
{   
    sort(arr1, n); 
    int tempArr[n];  
    int ArrIndex = 0;
    for (int i = 0, j = n-1; i <= n / 2 || j > n / 2; i++, j--) 
	{ 
        tempArr[ArrIndex] = arr1[i]; 
        ArrIndex++; 
        tempArr[ArrIndex] = arr1[j]; 
        ArrIndex++; 
    } 
    for (int i = 0; i < n; i++) 
        {arr1[i] = tempArr[i];}
} 
  
int main() 
{ 
    int arr1[] = { 5, 8, 1, 4, 2, 9, 3, 7, 6 };    
    int n = sizeof(arr1) / sizeof(arr1[0]); 
	    int i = 0; 
   //------------- print original array ------------------	
	printf("The given array is:  \n");
	for(i = 0; i < n; i++)
		{
			printf("%d  ", arr1[i]);
		}
	printf("\n");
//-----------------------------------------------------------  
	printf("The new array is:  \n");
    rearrangeArray(arr1, n); 
    for (int i = 0; i < n; i++) 
        printf("%d ",arr1[i]); 
    return 0; 
}

Sample Output:

The given array is:  
5  8  1  4  2  9  3  7  6  
The new array is:  
1 9 2 8 3 7 4 6 5  

Pictorial Presentation:

C Exercises: Rearrange an array in such an order that– smallest, largest, 2nd smallest, 2nd largest and on

Flowchart:

Flowchart:  Rearrange an array in such an order that– smallest, largest, 2nd smallest, 2nd largest and on

C Programming Code Editor:

Improve this sample solution and post your code through Disqus.

Previous: Write a program in C to rearrange an array such that arr[i]=i.
Next: Write a program in C to update every array element with multiplication of previous and next numbers in array.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.

C Programming: Tips of the Day

C Programming - What is the argument for printf that formats a long?

Put an l (lowercased letter L) directly before the specifier.

unsigned long n;
long m;

printf("%lu %ld", n, m);

Ref : https://bit.ly/3dIwfkP