public static List <SaveData.HighScore> QuickSortList(this List <SaveData.HighScore> list) { System.Random r = new System.Random(); List <SaveData.HighScore> less = new List <SaveData.HighScore>(); List <SaveData.HighScore> greater = new List <SaveData.HighScore>(); if (list.Count <= 1) { return(list); } int pos = r.Next(list.Count); SaveData.HighScore pivot = list[pos]; list.RemoveAt(pos); foreach (SaveData.HighScore player in list) { if (player.Score <= pivot.Score) { less.Add(player); } else { greater.Add(player); } } return(concat(QuickSortList(less), pivot, QuickSortList(greater))); }
public static List <SaveData.HighScore> concat(List <SaveData.HighScore> less, SaveData.HighScore pivot, List <SaveData.HighScore> greater) { List <SaveData.HighScore> sorted = new List <SaveData.HighScore>(less); sorted.Add(pivot); foreach (SaveData.HighScore i in greater) { sorted.Add(i); } return(sorted); }