Advertisement
Cinder1986

4D array quick sort

Apr 9th, 2023
681
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.76 KB | None | 0 0
  1.  
  2. void quicksort_4d_array(int arr[SIZE1][SIZE2][SIZE3][SIZE4], int start1, int end1, int start2, int end2, int start3, int end3, int start4, int end4) {
  3.     if (start1 >= end1 || start2 >= end2 || start3 >= end3 || start4 >= end4) {
  4.         return;
  5.     }
  6.     int pivot = arr[start1][start2][start3][start4];
  7.     int i = start1, j = start2, k = start3, l = start4;
  8.     for (int m = start1; m <= end1; m++) {
  9.         for (int n = start2; n <= end2; n++) {
  10.             for (int p = start3; p <= end3; p++) {
  11.                 for (int q = start4; q <= end4; q++) {
  12.                     if (arr[m][n][p][q] < pivot) {
  13.                         std::swap(arr[i][j][k][l], arr[m][n][p][q]);
  14.                         if (arr[i][j][k][l] < pivot) {
  15.                             std::swap(arr[i][j][k][l], arr[m][n][p][q]);
  16.                         }
  17.                         if (q < end4) {
  18.                             q++;
  19.                         }
  20.                         else {
  21.                             q = start4;
  22.                             if (p < end3) {
  23.                                 p++;
  24.                             }
  25.                             else {
  26.                                 p = start3;
  27.                                 if (n < end2) {
  28.                                     n++;
  29.                                 }
  30.                                 else {
  31.                                     n = start2;
  32.                                     m++;
  33.                                 }
  34.                             }
  35.                         }
  36.                     }
  37.                     else if (arr[m][n][p][q] == pivot) {
  38.                         if (q < end4) {
  39.                             q++;
  40.                         }
  41.                         else {
  42.                             q = start4;
  43.                             if (p < end3) {
  44.                                 p++;
  45.                             }
  46.                             else {
  47.                                 p = start3;
  48.                                 if (n < end2) {
  49.                                     n++;
  50.                                 }
  51.                                 else {
  52.                                     n = start2;
  53.                                     m++;
  54.                                 }
  55.                             }
  56.                         }
  57.                     }
  58.                 }
  59.             }
  60.         }
  61.     }
  62.     quicksort_4d_array(arr, start1, i - 1, start2, end2, start3, end3, start4, end4);
  63.     quicksort_4d_array(arr, i, end1, start2, j - 1, start3, end3, start4, end4);
  64.     quicksort_4d_array(arr, i, end1, j, end2, start3, end3, start4, end4);
  65.     quicksort_4d_array(arr, i, end1, j, end2, k, end3, start4, end4);
  66.     quicksort_4d_array(arr, i, end1, j, end2, k, end3, l, end4);
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement