void spinner_Itemselected(object sender, AdapterView.ItemSelectedEventArgs e) { _play.Clear(); if (_players.Count > 0) { _play.Add("Player"); _play.Add("Played"); _play.Add("Points"); //string [][] values = new string[players.Count] []; PointsInfo [] values = new PointsInfo[_players.Count]; int i = 0; foreach (string name in _players) { values [i] = new PointsInfo(name, Archive.Instance.GetPlayed(name), Archive.Instance.GetTotalAward(name)); ++i; } switch (e.Id) { case 0: SortByPointDescend(values, _players.Count); break; case 1: SortByPointAscend(values, _players.Count); break; case 2: SortByPlayedDescend(values, _players.Count); break; case 3: SortByPlayedAscend(values, _players.Count); break; case 4: SortByNameDescend(values, 0, _players.Count - 1); break; case 5: SortByNameAscend(values, 0, _players.Count - 1); break; } for (int j = 0; j < _players.Count; j++) { PointsInfo val = values [j]; _play.Add(val.player); _play.Add(val.played.ToString()); _play.Add((val.points > 0 ? "+" : "") + val.points.ToString()); } } else { _play.Add("No match found"); } }
private void SortByNameDescend(PointsInfo [] data, int left, int right) { int i = left, j = right; PointsInfo pivotInfo = data [new Random().Next(left, right)]; string pivotName = pivotInfo.player; while (i <= j) { while (data [i].player.CompareTo(pivotName) > 0) { i++; } while (data [j].player.CompareTo(pivotName) < 0) { j--; } if (i <= j) { // Swap PointsInfo tmp = data [i]; data [i] = data [j]; data [j] = tmp; i++; j--; } } // Recursive calls if (left < j) { SortByNameDescend(data, left, j); } if (i < right) { SortByNameDescend(data, i, right); } }