Esempio n. 1
0
        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");
            }
        }
Esempio n. 2
0
        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);
            }
        }