コード例 #1
0
        private IEnumerable <T> PureBubbleSort(IEnumerable <T> sortList)
        {
            int exchange = sortList.Count() - 1;
            var tempList = sortList.ToArray <T>();
            var args     = new SortEventArgs();

            while (exchange > 0)
            {
                int bound = exchange;
                exchange = 0;
                for (int i = 0; i < bound; i++)
                {
                    args.CurrentSortIndex            = i;
                    args.CurrentExchangeElementIndex = -1;
                    if (tempList[i].CompareTo(tempList[i + 1]) > 0)
                    {
                        Swap(ref tempList[i], ref tempList[i + 1]);
                        exchange = i;
                        args.CurrentExchangeElementIndex = i;
                    }
                    //调用处理中事件
                    args.ExecuteCount     += 1;
                    args.SortCompletedList = tempList.ToList <T>().ConvertAll <object>(s => (object)s);
                    ProcessSortEvent?.Invoke(args);
                }
            }
            return(tempList);
        }
コード例 #2
0
        private void RaiseProcessNoCrrentExchangeIndex(T[] items, int j)
        {
            _executeCount++;
            var args = new SortEventArgs();

            args.CurrentSortIndex  = j;
            args.SortCompletedList = items.ToList <T>().ConvertAll <object>(s => (object)s);
            args.ExecuteCount      = _executeCount;
            ProcessSortEvent?.Invoke(args);
        }