Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Порівняльна характеристика методів сортування: метод обміну і метод вставки




Сортування простими обмінами, сортування бульбашкою — простій алгоритм сортування. Для розуміння і реалізації цей алгоритм — простий, але|та| ефективний він лише для невеликих масивів. Складність алгоритму: O(n?).

Алгоритм полягає в проходах, що повторюються, по сортованому масиву. За кожен прохід елементи послідовно порівнюються попарно і, якщо порядок|лад| в парі невірний, виконується обмін елементів. Проходи по масиву повторюються до тих пір, поки на черговому проході не виявиться, що обміни більше не потрібні, що означає — масив відсортований. При проході алгоритму, елемент, що стоїть не на своєму місці|місце-милі|, «спливає» до потрібної позиції як бульбашка у воді, звідси і назва алгоритму.

Приклад на Java

for(int i = 0; i < a.length - 1; i++)

for(int j = 0; j < a.length - i - 1; j++)

if(a[j] > a[j + 1])

swap(a[j], a[j + 1]);

Сортування вставками — простий алгоритм сортування. Хоча цей метод сортування набагато менш ефективний, ніж складніші алгоритми, у нього є ряд|лава,низка| переваг:

- простий в реалізації;

- ефективний на невеликих наборах даних, на наборах даних до десятків елементів можуть виявитися кращими;

- ефективний на наборах даних, які вже частково відсортовані;

- це стійкий алгоритм сортування (не міняє|змінює,замінює| порядок|лад| елементів, які вже відсортовані);

- може сортувати список у міру його отримання|здобуття|;

- не вимагає тимчасової пам'яті, навіть під стек.

Сортування вставкою є|з'являється,являється| останнім з|із| класу простих алгоритмів сортування. При сортуванні вставкою спочатку упорядковуються два елементи масиву. Потім робиться|чинить| вставка третього елементу у відповідне місце|місце-милю| відносно перших двох елементів. Потім робиться|чинить| вставка четвертого елементу в список з|із| трьох елементів. Цей процес повторюється до тих пір, поки всі елементи не будуть впорядковані. Наприклад, для масиву "dcab|" сортування вставкою проходитиме|минатиме,спливатиме| таким чином:

- Початковий|вихідний| стан|достаток|: d с|із| а b;

- Перший прохід: с|із| d а b;

- Другий прохід: а с|із| d b;

- Третій прохід: а b с|із| d.

Метод вибору чергового елементу з|із| початкового|вихідного| масиву довільний; може використовуватися практично будь-який алгоритм вибору. Зазвичай|звично| (і з метою отримання|здобуття| стійкого алгоритму сортування), елементи вставляються по порядку їх появи у вхідному масиві.

Приклад

for j = 2 to A.length

key = A[j]

i = j - 1

while i > 0 and A[i] > key

A[i+1] = A[i]

i = i - 1

A[i+1] = key

 

Принципи об'єктно-орієнтованого програмування: інкапсуляція, наслідування та поліморфізм

Об'єктно-орієнтоване, або об'єктне, програмування (надалі ООП) — парадигма програмування, в якій основними концепціями є|з'являються,являються| поняття об'єктів і класів. У разі|в разі| мов|язиків| з|із| прототипіруванням| замість класів використовуються об'єкти-прототипи.

По Бьєрну Страуструпу, авторові C++|, мова|язик| може називатися об'єктно-орієнтованою, якщо в неї реалізовано три концепції: об'єкти, класи і Наслідування. Проте|однак| тепер прийнято вважати|лічити|, що такі мови|язики| повинні триматися на інших трьох китах: інкапсуляції, спадкоємстві і поліморфізмі. Це філософське зрушення|зсув| відбулося через те, що з часом|згодом| ми почали|стали| розуміти: побудувати|спорудити| об'єктно-орієнтовані системи без інкапсуляції і поліморфізму так само неможливо, як без класів і спадкоємства.

Інкапсуляція

Інкапсуляція, або приховування інформації (information| hiding|), — це можливість|спроможність| приховати внутрішній устрій об'єкту від його користувачів, надавши через інтерфейс доступ тільки|лише| до тих членів об'єкту, з|із| якими клієнтові дозволяється працювати безпосередньо|прямо|. Інкапсуляція має на увазі наявність межі|кордону| між зовнішнім інтерфейсом класу (відкритими|відчиняти| членами, видимими користувачам класу) і деталями його внутрішньої реалізації. Перевага інкапсуляції для розробника в тому, що він може відкрити|відчиняти| ті члени класу, які залишатимуться статичними, або незмінними, приховавши внутрішню організацію класу, динамічнішу і більшою мірою схильну до змін. У програмуванні інкапсуляція досягається шляхом призначення кожному членові класу свого модифікатора доступу — public|, private| або protected|.

Наслідування

Наслідуванням називають можливість|спроможність| при описі класу указувати|вказувати| на його походження(kind-of| relationship|) від іншого класу. Наслідування дозволяє створити новий клас, в основу якого покладений той, що існує|наявний|. У отриманий|одержувати| таким чином клас можна внести свої зміни, а потім створити нові об'єкти даного типу|типа|. Цей механізм лежить в основі створення|створіння| ієрархії класів. Похідним (derived| class|) називається створюваний клас, похідний від базового (base| class|). Похідний клас успадковує|наслідує| всі методи базового, дозволяючи задіяти результати колишньої праці.

Поліморфізм

Поліморфізм - це функціональна можливість|спроможність|, що дозволяє старому коду викликати|спричиняти| новий. Це властивість ООП, мабуть, найцінніше|коштовний|, оскільки дає вам можливість|спроможність| розширювати і удосконалювати|вдосконалювати| свою систему, не зачіпаючи існуючий код.

Припустимо|передбачатимемо|, вам потрібно написати метод, в якому для кожного об'єкту з|із| набору Employee| викликається|спричиняє| метод CakulatePay|. Все просто, якщо зарплата розраховується одним способом: ви можете відразу вставити в набір тип|типа| потрібного об'єкту. Проблеми починаються|розпочинають,зачинають| з|із| появою інших форм оплати. Допустимо, у вас вже є клас Employee|, що реалізує розрахунок зарплати по фіксованому окладу. А що робити|чинити|, щоб|аби| розрахувати зарплату контрактников| — адже це вже інший спосіб розрахунку. У випадку з процедурною мовою|язиком| вам довелося|припало| б переробити функцію, включивши в неї новий тип|типа| обробки, оскільки|тому що| в колишньому коді такої обробки немає. А об'єктно-орієнтована мова|язик| завдяки поліморфізму дозволяє робити|чинити| різну обробку.

Поліморфізм має явних два плюси. По-перше, він дозволяє групувати об'єкти, що мають загальний|спільний| базовий клас, і послідовно (наприклад, в циклі) їх обробляти. По-друге, старий код може використовувати новий код.

14. Об'єктно-орієнтовані мови програмування Delphi і Java |

Java|

З 1995 року почала|стала| широко розповсюджуватися|поширюватися| нова об'єктно-орієнтована мова|язик| програмування Java|, орієнтована на мережі|сіті| комп'ютерів і, перш за все|передусім|, на Internet|. Синтаксис цієї мови|язика| нагадує синтаксис мови|язика| C++|, проте|однак| ці мови| мають мало спільного|спільного|. Java -| мова|язик|, що інтерпретується: для неї визначено внутрішнє уявлення|виставу, подання, представлення| (bytecode|) і інтерпретатор цього уявлення|вистави, подання, представлення|, які вже зараз реалізовані на більшості платформ. Інтерпретатор спрощує налагодження програм, написаних на мові|язиці| Java|, забезпечує їх переносимість|переносимий| на нові платформи і адаптується|пристосував| до нових оточень. Він дозволяє виключити вплив програм, написаних на мові|язиці| Java|, на інші програми і файли, що є|наявний| на новій платформі, і тим самим забезпечити безпеку при виконанні цих програм. Ці властивості мови|язика| Java| дозволяють використовувати її як основну мову|язик| програмування для програм, поширюваних по мережах|сітях| (зокрема, по мережі|сіті| Internet|).

Delphi| (Дельфі) - середовище|середа| програмування, що використовує мову|язик| Object| Pascal|, розроблену фірмою|фірма-виготовлювачем| Borland| і спочатку реалізовану в її пакеті Borland| Delphi|, від якого і отримала|одержував| в 2003 році свою нинішню назву. По суті є|з'являється,являється| спадкоємцем мови|язика| Pascal| з|із| об'єктно-орієнтованими розширеннями. Object| Pascal| створювалася співробітниками компанії Apple| Computer| (деякі з яких були учасниками проекту Smalltalk|) спільно з|із| Никлаусом Віртом (Niklaus| Wirth|), творцем мови|язика| Pascal|. Object| Pascal| відома з 1986 року і є|з'являється,являється| першою об'єктно-орієнтованою мовою|язиком| програмування, яка була включена в Macintosh| Programmer's| Workshop| (MPW|), середовище|середу| розробки для комп'ютерів Macintosh| фірми|фірма-виготовлювача| Apple|. В цій мові|язиці| немає методів класу, змінних класу, множинного|численного| спадкоємства і метакласів|. Ці механізми виключені спеціально, щоб|аби| зробити мову|язик| простою для вивчення початкуючими "об'єктними" програмістами. Останніми роками ця мова|язик| стала дуже популярна завдяки системі Delphi| фірми|фірма-виготовлювача| Borland|.





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 539 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2441 - | 2325 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.