Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ QuickSort()

void System.Linq.Parallel.SortHelper< TInputOutput, TKey >.QuickSort ( int left,
int right,
TKey[] keys,
int[] indices,
CancellationToken cancelToken )
inlineprivate

Definition at line 317 of file SortHelper.cs.

318 {
319 if (right - left > 63)
320 {
321 cancelToken.ThrowIfCancellationRequested();
322 }
323 do
324 {
325 int num = left;
326 int num2 = right;
327 int num3 = indices[num + (num2 - num >> 1)];
328 TKey y = keys[num3];
329 while (true)
330 {
331 if (_keyComparer.Compare(keys[indices[num]], y) < 0)
332 {
333 num++;
334 continue;
335 }
336 while (_keyComparer.Compare(keys[indices[num2]], y) > 0)
337 {
338 num2--;
339 }
340 if (num > num2)
341 {
342 break;
343 }
344 if (num < num2)
345 {
346 int num4 = indices[num];
347 indices[num] = indices[num2];
348 indices[num2] = num4;
349 }
350 num++;
351 num2--;
352 if (num > num2)
353 {
354 break;
355 }
356 }
357 if (num2 - left <= right - num)
358 {
359 if (left < num2)
360 {
362 }
363 left = num;
364 }
365 else
366 {
367 if (num < right)
368 {
369 QuickSort(num, right, keys, indices, cancelToken);
370 }
371 right = num2;
372 }
373 }
374 while (left < right);
375 }
void QuickSort(int left, int right, TKey[] keys, int[] indices, CancellationToken cancelToken)
readonly IComparer< TKey > _keyComparer
Definition SortHelper.cs:30

References System.Linq.Parallel.SortHelper< TInputOutput, TKey >._keyComparer, System.Collections.Generic.IComparer< in T >.Compare(), System.indices, System.keys, and System.Linq.Parallel.SortHelper< TInputOutput, TKey >.QuickSort().

Referenced by System.Linq.Parallel.SortHelper< TInputOutput, TKey >.QuickSort(), and System.Linq.Parallel.SortHelper< TInputOutput, TKey >.QuickSortIndicesInPlace().