示例#1
0
 /// <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);
         }
     }
 }
示例#2
0
 /// <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);
     }
 }
示例#3
0
        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);
        }