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

◆ QuickSelect() [2/2]

override int System.Linq.EnumerableSorter< TElement, TKey >.QuickSelect ( int[] map,
int right,
int idx )
inlineprotected

Definition at line 179 of file EnumerableSorter.cs.

180 {
181 int num = 0;
182 do
183 {
184 int num2 = num;
185 int num3 = right;
186 int index = map[num2 + (num3 - num2 >> 1)];
187 while (true)
188 {
189 if (num2 < map.Length && CompareKeys(index, map[num2]) > 0)
190 {
191 num2++;
192 continue;
193 }
194 while (num3 >= 0 && CompareKeys(index, map[num3]) < 0)
195 {
196 num3--;
197 }
198 if (num2 > num3)
199 {
200 break;
201 }
202 if (num2 < num3)
203 {
204 int num4 = map[num2];
205 map[num2] = map[num3];
206 map[num3] = num4;
207 }
208 num2++;
209 num3--;
210 if (num2 > num3)
211 {
212 break;
213 }
214 }
215 if (num2 <= idx)
216 {
217 num = num2 + 1;
218 }
219 else
220 {
221 right = num3 - 1;
222 }
223 if (num3 - num <= right - num2)
224 {
225 if (num < num3)
226 {
227 right = num3;
228 }
229 num = num2;
230 }
231 else
232 {
233 if (num2 < right)
234 {
235 num = num2;
236 }
237 right = num3;
238 }
239 }
240 while (num < right);
241 return map[idx];
242 }
int CompareKeys(int index1, int index2)

References System.Linq.EnumerableSorter< TElement, TKey >.CompareKeys(), and System.Linq.index.