Changeset 7080 for trunk/Ohana/src/opihi/lib.data/sort.c
- Timestamp:
- May 5, 2006, 5:44:26 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/lib.data/sort.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/lib.data/sort.c
r2598 r7080 291 291 } 292 292 } 293 294 // sort two int vectors by first vector 295 void isort_pair (int *X, int *Y, int N) { 296 297 int l,j,ir,i; 298 int tX, tY; 299 300 if (N < 2) return; 301 l = N >> 1; 302 ir = N - 1; 303 for (;;) { 304 if (l > 0) { 305 l--; 306 tX = X[l]; 307 tY = Y[l]; 308 } 309 else { 310 tX = X[ir]; 311 X[ir] = X[0]; 312 tY = Y[ir]; 313 Y[ir] = Y[0]; 314 if (--ir == 0) { 315 X[0] = tX; 316 Y[0] = tY; 317 return; 318 } 319 } 320 i = l; 321 j = (l << 1) + 1; 322 while (j <= ir) { 323 if (j < ir && X[j] < X[j+1]) j++; 324 if (tX < X[j]) { 325 X[i] = X[j]; 326 Y[i] = Y[j]; 327 j += (i=j) + 1; 328 } 329 else j = ir + 1; 330 } 331 X[i] = tX; 332 Y[i] = tY; 333 } 334 }
Note:
See TracChangeset
for help on using the changeset viewer.
