fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define SIZE 5
  5.  
  6. void print(int **arr) {
  7. int i;
  8. for (i = 0; i < SIZE; ++i) {
  9. printf("%d ", arr[i][0]);
  10. printf("%d\n", arr[i][1]);
  11. }
  12. }
  13.  
  14. int compare(const void *lhs, const void *rhs)
  15. {
  16. const int *l = *(const int**)lhs;
  17. const int *r = *(const int**)rhs;
  18. if (l[0] > r[0])
  19. return 1;
  20. else if (l[0] < r[0])
  21. return -1;
  22. else {
  23. if (l[1] > r[1])
  24. return 1;
  25. else if (l[1] < r[1])
  26. return -1;
  27. else
  28. return 0;
  29. }
  30. }
  31.  
  32. int main()
  33. {
  34. int **arr = (int**)malloc(SIZE*sizeof(int*));
  35. int *tmp = (int*)malloc(SIZE*2*sizeof(int));
  36. int i;
  37.  
  38. for (i = 0; i < SIZE; ++i) {
  39. arr[i] = &tmp[i*2];
  40. }
  41. arr[0][0] = 2;
  42. arr[0][1] = 2;
  43.  
  44. arr[1][0] = 2;
  45. arr[1][1] = 1;
  46.  
  47. arr[2][0] = 1;
  48. arr[2][1] = 1;
  49.  
  50. arr[3][0] = 1;
  51. arr[3][1] = 0;
  52.  
  53. arr[4][0] = 0;
  54. arr[4][1] = 0;
  55.  
  56. print(arr);
  57. qsort(arr, SIZE, sizeof(int*), compare);
  58. printf("\n");
  59. print(arr);
  60.  
  61. free(tmp);
  62. free(arr);
  63.  
  64. return 0;
  65.  
  66. }
  67.  
  68.  
Success #stdin #stdout 0s 2424KB
stdin
Standard input is empty
stdout
2 2
2 1
1 1
1 0
0 0

0 0
1 0
1 1
2 1
2 2