| 151 | } |
| 152 | |
| 153 | void XOrdSort(st_XORDEREDARRAY* array, XOrdCompareCallback test) |
| 154 | { |
| 155 | void** list = array->list; |
| 156 | S32 num = array->cnt; |
| 157 | S32 i = 0; |
| 158 | S32 j = 0; |
| 159 | S32 h = 1; |
| 160 | void* v = NULL; |
| 161 | |
| 162 | while (h <= num) |
| 163 | h = h * 3 + 1; |
| 164 | while (h != 1) |
| 165 | { |
| 166 | h /= 3; |
| 167 | for (i = h; i < num; i++) |
| 168 | { |
| 169 | v = list[i]; |
| 170 | for (j = i; j >= h && test(v, list[j - h]) < 0; j -= h) |
| 171 | { |
| 172 | list[j] = list[j - h]; |
| 173 | } |
| 174 | list[j] = v; |
| 175 | } |
| 176 | } |
| 177 | } |
no test coverage detected