Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.91 KB | None | 0 0
  1. public static List<T> QuickSort<T>(List<T> elements) where T : IComparable
  2. {
  3. var rand = new Random();
  4.  
  5. if(elements.Count < 2) return elements;
  6.  
  7. var pivot = rand.Next(0, elements.Count-1);
  8. var val = elements[pivot];
  9.  
  10. var lesser = new List<T>();
  11. var greater = new List<T>();
  12. for (var i = 0; i < elements.Count; ++i)
  13. {
  14. if (i != pivot)
  15. {
  16. if (elements[i].CompareTo(val) < 0)
  17. {
  18. lesser.Add(elements[i]);
  19. }
  20. else
  21. {
  22. greater.Add(elements[i]);
  23. }
  24. }
  25. }
  26.  
  27. var merged = QuickSort(lesser);
  28. merged.Add(val);
  29. merged.AddRange(QuickSort(greater));
  30. return merged;
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement