/// <summary> /// Фаза разделения, разделяем данный на два файла по сортированным фазам длинной step /// </summary> /// <param name="reader">Источник</param> /// <param name="writerOne">Первый получатель</param> /// <param name="writerTwo">Второй получатель</param> /// <param name="step">Длина сортированной фазы</param> private void Devision <TInnerType>(IExternalReader <TInnerType> reader, IExternalWriter <TInnerType> writerOne, IExternalWriter <TInnerType> writerTwo, long step) where TInnerType : class, IComparable { while (reader.IsNext()) { writerOne.Write(reader.Current); for (long i = 1; (i < step) && reader.IsNext(); i++) { writerOne.Write(reader.Current); } for (long i = 0; (i < step) && reader.IsNext(); i++) { writerTwo.Write(reader.Current); } } }
private TInnerType ReadNextStudentInPhase <TInnerType>(long step, IExternalReader <TInnerType> reader, TInnerType currentStudent) where TInnerType : class, IComparable { if (step <= 0) { return(null); } if (currentStudent != null) { return(currentStudent); } return(reader.IsNext() ? reader.Current : null); }