Welcome to collectivesolver - Programming & Software Q&A. A website you can trust. All programs tested and works. Contact: aviboots(AT)netvision.net.il
Bonsai Boy of New York Bonsai Trees and Accessories

BlueHost Web Hosting

Liquid Web iThemes WordPress Hosting

Ecommerce Software - Best Ecommerce Platform Made for You - Free Trial

DreamHost Web Hosting


Ecommerce Software - Best Ecommerce Platform Made for You - Free Trial

Liquid Web Cloud VPS Hosting

10,903 questions

14,810 answers

573 users

How to sort array odd numbers in descending order and even numbers in ascending order in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>

void print(int arr[], int len) { 
     for (int i = 0; i < len; i++) 
        printf("%i ", arr[i]);
    printf("\n");
}

int compare_function(const void *a, const void *b) {
   return ( *(int*)a - *(int*)b );
}

void make_odds_negative(int arr[], int len) {
    for (int i = 0 ; i < len ; i++) 
        if (arr[i] % 2 != 0)
            arr[i] *= -1; 
}

void odd_even_sort(int arr[], int len) { 
    make_odds_negative(arr, len);
  
    print(arr, len);
    
    qsort(arr, len, sizeof(int), compare_function);
    
    print(arr, len);
  
    make_odds_negative(arr, len);
} 

int main() 
{ 
    int arr[] = {3, 4, 6, 1, 2, 5}; 
    int len = sizeof(arr)/sizeof(int); 
    
    odd_even_sort(arr, len); 
    
    print(arr, len);
        
    return 0; 
} 



/*
run:

-3 4 6 -1 2 -5 
-5 -3 -1 2 4 6 
5 3 1 2 4 6 

*/

 




answered May 3 by avibootz
edited May 4 by avibootz
...