Skip to content

Commit 5906af9

Browse files
author
Oren Novotny
authored
Merge pull request #887 from dotnet/UseArraySort
Use Array.Sort instead of QuickSort.
2 parents 7c2d6a0 + f311d17 commit 5906af9

File tree

2 files changed

+10
-60
lines changed

2 files changed

+10
-60
lines changed

Ix.NET/Source/System.Linq.Async.Tests/System/Linq/Operators/OrderBy.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ public void OrderBy_Null()
4242
Assert.Throws<ArgumentNullException>(() => AsyncEnumerable.ThenByDescending(xs, default, Comparer<int>.Default));
4343
}
4444

45+
[Fact]
46+
public async Task OrderBy_Empty()
47+
{
48+
var ys = AsyncEnumerable.Empty<int>().OrderBy(x => x);
49+
50+
var e = ys.GetAsyncEnumerator();
51+
await NoNextAsync(e);
52+
}
53+
4554
[Fact]
4655
public async Task OrderBy1()
4756
{

Ix.NET/Source/System.Linq.Async/System/Linq/Operators/OrderedAsyncEnumerable.cs

Lines changed: 1 addition & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -625,66 +625,7 @@ internal sealed override int CompareAnyKeys(int index1, int index2)
625625

626626
private int CompareKeys(int index1, int index2) => index1 == index2 ? 0 : CompareAnyKeys(index1, index2);
627627

628-
protected override void QuickSort(int[] map, int left, int right)
629-
{
630-
// REVIEW: Consider using Array.Sort, see https://github.com/dotnet/corefx/commit/a6aff797a33e606a60ec0c9ca034a161c609620f#diff-d90239bd8284188e2bd210790483f5ca.
631-
632-
do
633-
{
634-
var i = left;
635-
var j = right;
636-
var x = map[i + ((j - i) >> 1)];
637-
638-
do
639-
{
640-
while (i < map.Length && CompareKeys(x, map[i]) > 0)
641-
{
642-
i++;
643-
}
644-
645-
while (j >= 0 && CompareKeys(x, map[j]) < 0)
646-
{
647-
j--;
648-
}
649-
650-
if (i > j)
651-
{
652-
break;
653-
}
654-
655-
if (i < j)
656-
{
657-
var temp = map[i];
658-
map[i] = map[j];
659-
map[j] = temp;
660-
}
661-
662-
i++;
663-
j--;
664-
}
665-
while (i <= j);
666-
667-
if (j - left <= right - i)
668-
{
669-
if (left < j)
670-
{
671-
QuickSort(map, left, j);
672-
}
673-
674-
left = i;
675-
}
676-
else
677-
{
678-
if (i < right)
679-
{
680-
QuickSort(map, i, right);
681-
}
682-
683-
right = j;
684-
}
685-
}
686-
while (left < right);
687-
}
628+
protected override void QuickSort(int[] keys, int lo, int hi) => Array.Sort(keys, lo, hi - lo + 1, Comparer<int>.Create(CompareAnyKeys));
688629

689630
protected override void PartialQuickSort(int[] map, int left, int right, int minIndexInclusive, int maxIndexInclusive)
690631
{

0 commit comments

Comments
 (0)