Главная » Просмотр файлов » 1629295403-b876e2087bddebea4bc9666fb2377a02

1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 25

Файл №846199 1629295403-b876e2087bddebea4bc9666fb2377a02 (С для чайников) 25 страница1629295403-b876e2087bddebea4bc9666fb2377a02 (846199) страница 252021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 25)

Кроме массивов, он работает и с другими видами коллекций (о которыхрассказывается, например, в главе 15, "Обобщенное программирование"). Крометого, f o r e a c h в состоянии работать и с многомерными массивами (т.е. масси­вами массивов), но эта тема выходит за рамки настоящей книги.Сортировка элементов в массиве — весьма распространенная программистская зада-'ча. То, что массив не может расти или уменьшаться, еще не означает, что его элементыне могут перемещаться, удаляться или добавляться.

Например, обмен местами двух эле­ментов типа S t u d e n t в массиве может быть выполнен так, как показано в следующемфрагменте исходного текста:S t u d e n t temp = s t u d e n t s [i] ;s t u d e n t s [i]= students [j];students[j]= temp;//Сохраняемi-гостудентаЗдесь сначала во временной переменной сохраняется ссылка на объект в i-ой позициимассива s t u d e n t s , чтобы она не была потеряна при обмене, затем ссылка в i-ой пози­ции заменяется ссылкой в j-ой позиции. После этого в j-ую позицию помещается ранеесохраненная во временной переменной ссылка, которая изначально находилась в i-ОЙ по­зиции. Происходящее схематично показано на рис.

6.2.Некоторые коллекции данных более гибки, чем массивы, и поддерживают до­бавление и удаление элементов. С такими коллекциями вы познакомитесь вглаве 15, "Обобщенное программирование".734Часть III. Объектно-основанное программированиеРис. 6.2. "Обмен двух объектов" на самом де­ле означает "обмен ссылок на два объекта"Приведенная ниже программа демонстрирует,к а к и с п о л ь з о в а т ь возмож­ность манипуляции э л е м е н т а м и массива для их сортировки. В п р о г р а м м еп р и м е н е н а л г о р и т м пузырьковой сортировки.Он не с л и ш к о мэффективени плохо подходит для сортировки больших массивов с тысячами элементов,но зато очень прост и вполне п р и м е н и м для н е б о л ь ш и х массивов.// S o r t S t u d e n t s// Демонстрационная// о б ъ е к т о вusing S y s t e m ;namespaceпрограммадлясортировкимассиваSortStudents(classProgram{publics t a t i cvoidMain(string[]args){// СозданиеStudent[]ststudents[0]students[1]students[2]students[3]students[4]массива студентовu d e n t s = new S t u d e n t [ 5 ] ;= Student.NewStudent("Homer",0);= Student.NewStudent("Lisa",4.0);= Student.NewStudent("Bart",2.0);= Student.NewStudent("Marge",3.0);= Student.NewStudent("Maggie",3.5);Глава ft Объединение данных — классыи массивы135/ / Вывод н е о т с о р т и р о в а н н о г осписка:Console.WriteLine("Досортировки:");OutputStudentArray(students);// Сортируем с п и с о к с т у д е н т о в в с о о т в е т с т в и и с их// у с п е в а е м о с т ь ю(первыми в списке идут студенты с//лучшейуспеваемостью)Console.WriteLine("\пСортировкасписка\п");Student.Sort(students);/ / Вывод о т с о р т и р о в а н н о г оспискаConsole.WriteLine("ОтсортированныйOutputStudentArray(students);список:");//Ожидаем п о д т в е р ж д е н и япользователяConsole.WriteLine("Нажмите <Enter> для " +"завершенияпрограммы...");Console.Read();}// O u t p u t S t u d e n t A r r a y - выводит информацию о в с е х//студентахв массивеpublics t a t i cvoid OutputStudentArray(Student []students){foreach(Studentsinstudents){Console.WriteLine(s.GetString());}} }//Student//-описаниестудента,включающееегоимяиуспеваемостьclassStudent{publicstringsName;publicdoubledGrade////NewStudentобъектpublic-s t a t i c=0.0;возвращаетStudentновыйинициализированныйNewStudent(stringdoublesName,dGrade){S t u d e n t s t u d e n t = new S t u d e n t ( ) ;s t u d e n t .

s N a m e = sName;student.dGrade = dGrade;returnstudent;}////GetStringстрокуpublicstring-преобразуеттекущийобъекттипаStudentвGetString(){136Часть III. Объектно-основанное программирован»»strins +=s +=s +=returg s = "" ;dGrade;" - " ;sName;ns;}//////Sort - сортировка массива студентовубывания их у с п е в а е м о с т и при помощипузырьковой сортировкиpublics t a t i cvoidSort(Student[]в порядкеалгоритмаstudents){bool//bRepeatLoop;Циклвыполняетсядополнойсортировкиспискаdo{// Этот флаг принимает значение t r u e при наличии// хотя бы одного объекта не в порядке с о р т и р о в к иbRepeatLoop =false;// Цикл по в с е м у с п и с к уf o r ( i n t i n d e x = 0;indexindex++)студентов<(students.Length-1);{////ifЕсли два студента находятся в списке в неверномпорядке...(students[index].dGrade<students[index +1].dGrade){//...меняем их местами...Student to = s t u d e n t s [ i n d e x ] ;S t u d e n t from = s t u d e n t s [ i n d e x +students[index]= from;s t u d e n t s [ i n d e x + 1]= to;1];//.

. . и присваиваем флагу значение t r u e ,чтобы// программа выполнила очередной проход по// списку(итерации продолжаются,пока список не//будетполностью отсортирован)bRepeatLoop = t r u e ;}}}while(bRepeatLoop);}}Рассмотрим вывод данной программы, просто чтобы убедиться в ее работоспособности:До с о р т и р о в к и :О - Homer4 - Lisa2 - BartГлава 6.Объединение данных - классы и массивы1373 3.5Marge- MaggieСортировкаспискаОтсортированный4 - Lisa3.5- Maggie3 - Marge2 - Bart0 - HomerНажмите < E n t e r >список:длязавершенияпрограммы...Чтобы сберечь ваше и мое время, создание списка из пяти студентов просто закоди­ровано непосредственно в программе. Метод N e w S t u d e n t () выделяет память и созда­ет новый объект типа S t u d e n t , инициализирует его и возвращает вызывающей фун*ции.

Для вывода информации о всех студентах в списке используется функция OutputStudentArray().Затем программа вызывает функцию S o r t ( ) . После сортировки программа повтор»ет процесс вывода списка, чтобы вы могли убедиться, что теперь он упорядочен.Само собой, ключевым моментом в программе S o r t S t u d e n t s является мето]S o r t ( ) . Этот алгоритм выполняет проходы по списку до тех пор, пока список не будаполностью отсортирован, и при каждом таком проходе сравнивает два соседних объеммассива.

Если они находятся в неверном порядке, функция обменивает их местами и отмечает этот факт в специальной переменной-флаге, которая затем используется в уел»вии цикла, указывая, полностью ли отсортирован массив. На рис. 6.3-6.6 показано, ивыглядит список студентов после каждого прохода.HOMER0LISA4LISA4BART2BART2MARGE3MARGE3MAGGIE3,5MAGGIE3,5HOMER0Рис. 6.3. Список студен­тов до сортировки-*•— Homer проделал свой путь в конец спискаРис. 6.4. Список студентов после первого проходаРис. 6.5. Список студентов после второго проходаВ конечном итоге лучшие студенты, как пузырьки в воде, "всплывают" в верх спискав то время как наихудшие "тонут" и падают на дно. Потому такая сортировка и называетсяпузырьковой.138Часть III.

Объектно-основанное программированиеРис. 6.6. Список студентов после предпоследнегопрохода оказывается полностью отсортирован.Последний проход завершает сортировку, таккак никаких изменений при нем не вноситсяКлючевым моментом любой функции сортировки является возможность пере­упорядочения элементов внутри массива, присваивая ссылку из одного элемен­та другому. Заметим, что такое присваивание не создает копии объекта, а сле­довательно, является очень быстрой операцией.Глава 6.Объединение данных - классы и массивы139Глава 7Функции функций> Определение функции> Передача аргументов в функцию> Получение результата из функции> Передача аргументов программерограммисты нуждаются в возможности разбить большую программу на бо­лее мелкие части, с которыми легче совладать.

Например, программы, содер­жащиеся в предыдущих главах, уже достигли своего предельного размера, с которым какс единым целым может справиться один человек.С# позволяет разделить код на куски, известные как функции. Правильно спроектиро­ванные и реализованные функции существенно облегчают работу по написанию слож­ных программ.Рассмотрим следующий пример:classExamplepublic i n t n l n t ;public s t a t i c i n t n S t a t i c I n tpublic v o i d MemberFunction(){}Console.WriteLine("Это/ / H eстатический член// Статический член/ / H e статическая функцияфункция-член" ) ;^publicstaticvoidClassFunction()//Статическаяфункция{Console.WriteLine("Этофункциякласса");}Элемент n l n t является членом-данными, с которыми вы познакомились в главе 6,"Объединение д а н н ы х — классы и массивы".

Характеристики

Тип файла
PDF-файл
Размер
14,75 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее