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); }
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); }