başarısız olduğunu ve rastgele çalışan bu kodu/çalışmıyor ve neden bilemiyorum.
Önemli: Bunu bir dizide veya listede çağırdığımda, düzgün çalışıyor. Ama üzerinde bilinmeyen-ne o-gerçekten-edilir, bu (değerleri veya çöküyor, genellikle bazen çalışır kaybeder..) Deli IEnumerable gider
kodu:C# fonksiyonel quicksort ben linq kullanarak C# kullanarak işlevsel bir tarzda quicksort uygulamaya çalışıyorum
public static IEnumerable<T> Quicksort<T>(this IEnumerable<T> source) where T : IComparable<T> { if (!source.Any()) yield break; var pivot = source.First(); var sortedQuery = source.Skip(1).Where(a => a.CompareTo(source.First()) <= 0).Quicksort() .Concat(new[] { pivot }) .Concat(source.Skip(1).Where(a => a.CompareTo(source.First()) > 0).Quicksort()); foreach (T key in sortedQuery) yield return key; }
Eğer herhangi bir hataları bulabilir Bu, bunun başarısız olmasına neden olur mu?
Düzenleme
: Bazı daha iyi bir test kodu: SQL veya Varlık Çerçeve sorguları Linq tarafından döndürülen gibivar rand = new Random(); var ienum = Enumerable.Range(1, 100).Select(a => rand.Next()); var array = ienum.ToArray(); try { array.Quicksort().Count(); Console.WriteLine("Array went fine."); } catch (Exception ex) { Console.WriteLine("Array did not go fine ({0}).", ex.Message); } try { ienum.Quicksort().Count(); Console.WriteLine("IEnumerable went fine."); } catch (Exception ex) { Console.WriteLine("IEnumerable did not go fine ({0}).", ex.Message); }
Ne demek 'bilinmiyor-ne-gerçekten-IEnumerable' nedir? Bu genel bir yöntemdir, bu yüzden nesnenizin türleri her zaman bilinir. –
Yani, IEnumerable kabuğunun altında ne olduğunu bilmiyorum. Bu bir liste mi? bir dizi? Ne denedim ve başarısız olan, temelde "Random rand = ...; int [100] .Select (a => rand.Next()); – Rubys