/// <summary> /// Фаза разделения, разделяем данный на два файла по сортированным фазам длинной step /// </summary> /// <param name="reader">Источник</param> /// <param name="writerOne">Первый получатель</param> /// <param name="writerTwo">Второй получатель</param> /// <param name="step">Длина сортированной фазы</param> private void Devision(StudentXmlReader reader, StudentXmlWriter writerOne, StudentXmlWriter writerTwo, long step) { 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); } } }
/// <summary> /// Является ли отсортированным данный файл /// </summary> /// <param name="path"></param> /// <returns></returns> public bool IsSorted(string path) { using (var reader = new StudentXmlReader(path)) { reader.IsNext(); var current = reader.Current; while (reader.IsNext()) { if (current.CompareTo(reader.Current) > 0) { return(false); } else { current = reader.Current; } } return(true); } }
private Student?ReadNextStudentInPhase(long step, StudentXmlReader reader, Student?currentStudent) { if (step <= 0) { return(null); } if (currentStudent.HasValue) { return(currentStudent); } if (reader.IsNext()) { return(reader.Current); } return(null); }