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

◆ IntroSort()

void System.Array.SorterGenericArray.IntroSort ( int lo,
int hi,
int depthLimit )
inlineprivate

Definition at line 296 of file Array.cs.

297 {
298 while (hi > lo)
299 {
300 int num = hi - lo + 1;
301 if (num <= 16)
302 {
303 switch (num)
304 {
305 case 2:
306 SwapIfGreater(lo, hi);
307 break;
308 case 3:
309 SwapIfGreater(lo, hi - 1);
310 SwapIfGreater(lo, hi);
311 SwapIfGreater(hi - 1, hi);
312 break;
313 default:
314 InsertionSort(lo, hi);
315 break;
316 }
317 break;
318 }
319 if (depthLimit == 0)
320 {
321 Heapsort(lo, hi);
322 break;
323 }
324 depthLimit--;
325 int num2 = PickPivotAndPartition(lo, hi);
327 hi = num2 - 1;
328 }
329 }
int PickPivotAndPartition(int lo, int hi)
Definition Array.cs:331
void SwapIfGreater(int a, int b)
Definition Array.cs:242
void Heapsort(int lo, int hi)
Definition Array.cs:362
void InsertionSort(int lo, int hi)
Definition Array.cs:405
void IntroSort(int lo, int hi, int depthLimit)
Definition Array.cs:296

References System.Array.SorterGenericArray.Heapsort(), System.Array.SorterGenericArray.InsertionSort(), System.Array.SorterGenericArray.IntroSort(), System.Array.SorterGenericArray.PickPivotAndPartition(), and System.Array.SorterGenericArray.SwapIfGreater().

Referenced by System.Array.SorterGenericArray.IntroSort(), and System.Array.SorterGenericArray.IntrospectiveSort().