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

◆ IntroSort() [1/2]

static void System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.IntroSort ( Span< T > keys,
int depthLimit )
inlinestaticprivate

Definition at line 104 of file GenericArraySortHelper.cs.

105 {
106 int num = keys.Length;
107 while (num > 1)
108 {
109 if (num <= 16)
110 {
111 switch (num)
112 {
113 case 2:
114 SwapIfGreater(ref keys[0], ref keys[1]);
115 break;
116 case 3:
117 {
118 ref T j = ref keys[2];
119 ref T reference = ref keys[1];
120 ref T i = ref keys[0];
121 SwapIfGreater(ref i, ref reference);
122 SwapIfGreater(ref i, ref j);
123 SwapIfGreater(ref reference, ref j);
124 break;
125 }
126 default:
127 InsertionSort(keys.Slice(0, num));
128 break;
129 }
130 break;
131 }
132 if (depthLimit == 0)
133 {
134 HeapSort(keys.Slice(0, num));
135 break;
136 }
137 depthLimit--;
138 int num2 = PickPivotAndPartition(keys.Slice(0, num));
139 Span<T> span = keys;
140 IntroSort(span[(num2 + 1)..num], depthLimit);
141 num = num2;
142 }
143 }
static void IntroSort(Span< T > keys, int depthLimit)

References System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.HeapSort(), System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.InsertionSort(), System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.IntroSort(), System.keys, System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.PickPivotAndPartition(), and System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.SwapIfGreater().

Referenced by System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.IntroSort(), System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.IntroSort(), System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.Sort(), and System.Collections.Generic.GenericArraySortHelper< TKey, TValue >.Sort().