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 Managed Dedicated Server: RAID 1 SSD with 16GB of RAM minimum! 24/7 On-Site Heroic Support! Industry-Leading SLA!

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

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

getflywheel wordpress hosting


Liquid Web Cloud VPS Hosting

10,405 questions

14,169 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
...