Поиск по этому блогу

воскресенье, 8 апреля 2012 г.

Пузырьковая сортировка

Приведенная ниже программа демонстрирует, как использовать возможность
манипуляции элементами массива для их сортировки. В программе
применен алгоритм пузырьковой сортировки.
Писал по книжке)

namespace BubbleSort
{
    class Program
    {
        public static void OutputStudentArray(Student[] students) 
        {
            foreach(Student s in students)
            {
                Console.WriteLine(s.GetString());
            }
        }
        static void Main(string[] args)
        {
            Student[] students = new Student[5];
            students[0] = Student.NewStudent("Homer", 0);
            students[1] = Student.NewStudent("Lisa", 4.0);
            students[2] = Student.NewStudent("Bart", 2.0);
            students[3] = Student.NewStudent("Marge", 3.0);
            students[4] = Student.NewStudent("Maggie", 3.5);
            Console.WriteLine("До сортировки");
            OutputStudentArray(students);
            Console.WriteLine("Сортировка");
            Student.Sort(students);
            Console.WriteLine("Вывод отсортированного списка");
            OutputStudentArray(students);
            Console.WriteLine("Нажмите <Enter>");
            Console.ReadLine();
        }
    }
}
namespace BubbleSort
{
    class Student
    {
        public string sName;
        public double dGrade = 0.0;
        public static Student NewStudent(string sName, double dGrade) 
        {
            Student student = new Student();
            student.sName = sName;
            student.dGrade = dGrade;
            return student;
        }
        public string GetString() 
        {
            string s = "";
            s += dGrade;
            s += " - ";
            s += sName;
            return s;
        }
        public static void Sort(Student[] students) 
        {
            bool bRepeatLoop;
            do
            {
                bRepeatLoop = false;
                for (int index = 0; index < (students.Length - 1); index++)
                {
                    if (students[index].dGrade < students[index + 1].dGrade)
                    {
                        Student to = students[index];
                        Student from = students[index + 1];
                        students[index] = from;
                        students[index + 1] = to;
                        bRepeatLoop = true;
                    }
                }
            } while (bRepeatLoop);
        }
    }
}

Комментариев нет:

Отправить комментарий