Esto se basa en el tuyo, pero enumera perezosamente.
using System; using System.Collections.Generic; using System.Linq; namespace Algorithms.Sorting { public static class EnumerableExtension { public static IEnumerable ScalarBubbleSort(this IEnumerable items) { var remaining = new List(items); while (remaining.Count > 0) { var subject = remaining[0]; remaining.RemoveAt(0); for (var i = 0; i current) { remaining[i] = subject; subject = current; } } yield return subject; } } public static IEnumerable BubbleSort(this IEnumerable items, IComparer comparer = null) where T : IComparable { if (comparer == null) { comparer = Comparer.Default; } var remaining = new List(items); while (remaining.Count > 0) { var subject = remaining[0]; remaining.RemoveAt(0); for (var i = 0; i 0) { remaining[i] = subject; subject = current; } } yield return subject; } } } }