| 122 | } |
| 123 | |
| 124 | static void qsort_descent_inplace( |
| 125 | std::vector<OutputInfo>& faceoutput_infos, int left, int right) { |
| 126 | int i = left; |
| 127 | int j = right; |
| 128 | float p = faceoutput_infos[(left + right) / 2].prob; |
| 129 | |
| 130 | while (i <= j) { |
| 131 | while (faceoutput_infos[i].prob > p) |
| 132 | i++; |
| 133 | |
| 134 | while (faceoutput_infos[j].prob < p) |
| 135 | j--; |
| 136 | |
| 137 | if (i <= j) { |
| 138 | // swap |
| 139 | std::swap(faceoutput_infos[i], faceoutput_infos[j]); |
| 140 | |
| 141 | i++; |
| 142 | j--; |
| 143 | } |
| 144 | } |
| 145 | |
| 146 | #pragma omp parallel sections |
| 147 | { |
| 148 | #pragma omp section |
| 149 | { |
| 150 | if (left < j) |
| 151 | qsort_descent_inplace(faceoutput_infos, left, j); |
| 152 | } |
| 153 | #pragma omp section |
| 154 | { |
| 155 | if (i < right) |
| 156 | qsort_descent_inplace(faceoutput_infos, i, right); |
| 157 | } |
| 158 | } |
| 159 | } |
| 160 | |
| 161 | static void qsort_descent_inplace(std::vector<OutputInfo>& output_infos) { |
| 162 | if (output_infos.empty()) |
no test coverage detected