How to sort 2D array rows with qsort in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
    
#define ROWS 3
#define COLS 4	
	
void print_arr2d(int arr2d[][COLS]) {
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
            printf("%3i", arr2d[i][j]);
        }
        printf("\n");
    }
	printf("\n");
}

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

int main() 
{                       
    int arr2d[ROWS][COLS] = {{5, 8, 1, 3}, {9, 6, 12, 4}, {7, 11, 10, 2}};
	
	print_arr2d(arr2d);
	
	for (int i = 0; i < COLS; i++) {
        qsort(arr2d[i], COLS, sizeof(int), compare_function); 
    }
	
    print_arr2d(arr2d);
         
    return 0; 
} 
      
      
      
/*
run:
      
  5  8  1  3
  9  6 12  4
  7 11 10  2

  1  3  5  8
  4  6  9 12
  2  7 10 11
      
*/

 



answered Dec 3, 2019 by avibootz
edited Dec 3, 2019 by avibootz

Related questions

1 answer 189 views
189 views asked Dec 4, 2019 by avibootz
2 answers 246 views
2 answers 232 views
1 answer 260 views
1 answer 175 views
...