Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Методи впорядкування масивів.↑ Стр 1 из 4Следующая ⇒ Содержание книги Поиск на нашем сайте
Методи впорядкування масивів. Під сортуванням (впорядкуванням) звичайно розуміють процес перестановки об'єктів даної множини у визначеному порядку. Ціль сортування - полегшити наступний пошук елементів у відсортованій множині. Наприклад, якщо вихідна сукупність даних впорядкована, то значно полегшуються операції пошуку елементів із заданими властивостями. У загальному випадку елементом масиву може бути запис, що складається з декількох полів. Сортування може проводитися по кожному з полів, яке називається в цьому випадку ключем. Так, якщо список службовців сортується по коду службовців, то ключем є код, якщо за прізвищем - ключем є прізвище і т.п. Якщо ж елементами масиву є дані простого типу (цілий, дійсний і т.д.), то ключем буде саме значення елементу. Основні вимоги до сортування масивів – раціональне використання пам'яті. Це означає, що переупорядкування елементів потрібно виконувати в цьому ж самому масиві. Методи, що пересилають елементи з масиву А в масив В, нами розглядатись не будуть.. Існує кілька різних методів сортування, що відрізняються ступенем складності й ефективністю. Зручна міра ефективності утворюється при підрахунку числа С - необхідних порівнянь ключів і М – кількості пересилань елементів. Ці числа визначаються деякими функціями від числа n – кількості елементів, що впорядковуються.. Гарні алгоритми сортування вимагають порядку n•logn порівнянь, однак, вони досить складні. Щоб розібрати основні принципи сортувань, скористаємося спочатку розглядом щодо простих методів, що вимагають порядку n2 порівнянь ключів. Методи, що сортують елементи усередині масиву, можна розбити на чотири основних класи в залежності від покладеного в їх основі прийому: · сортування включеннями; · сортування вибором; · сортування обміном; При розгляді основних методів зробимо припущення: · в ролі структури даних для розгляду алгоритмів сортування оберемо одновимірний цілочисельний масив; · сортування буде здійснюватись без використання допоміжних масивів; · впорядкування здійснюється за зростанням; · в головній програмі діє такий опис даних. const n=...; {кількість елементів масиву визначається користувачем} type massiv = array[1..n] of integer; var a:massiv; i:integer; Методи сортування. Сортування простим вибором Сутність методу полягає у наступному. На першому кроці обирається найменший елемент і міняється місцями з першим. На другому кроці серед решти елементів знову обирається найменший елемент і міняється місцями з другим. Цей процес продовжується до повного впорядкування вихідного масиву. Проілюструємо роботу методу на прикладі масиву з 10 елементів. На кожному кроці найменший елемент виділятимемо іншим кольором. Вихідний масив: 44 55 12 42 94 18 06 67 32 13 Після першого кроку: 06 55 12 42 94 18 44 67 32 13 Після другого кроку: 06 12 55 42 94 18 44 67 32 13 На останньому кроці 06 12 13 18 32 42 44 55 67 94 При записі алгоритму на кожному кроці доцільно при пошукові найменшого елементу запам’ятовувати не сам елемент, а його номер. Це спростить алгоритм. Процедура сортування простим вибором має такий вигляд: procedure straightselection (var a: massiv); var i,j,k: integer; x: integer; n1,n: integer; begin {границі масиву} n1:= Low(a); n:= High (a); {впорядкування} for i:= n1 to n do begin k:=i; for j:= i+1 to n do if a[j]<a[k] then k:=j; if k >i then begin x:=a[i]; a[i]:=a[k]; a[k]:=x; end; end; end; Число C порівнянь ключів не залежить від початкового порядку ключів: C=1/2 (n2 +n–1). Мінімальне число пересилань у випадку початково упорядкованих елементів має значення: Mmin=0 Найбільше значення ця величина приймає у випадку, коли елементи вихідного масиву розташовані в зворотному порядку до впорядкування (тобто, впорядковані за спаданням): Mmax=trunc (n2/4). Сортування простим обміном Наведений нижче алгоритм сортування простим обміном заснований на принципі порівняння й обміну пари сусідніх елементів доти, поки не будуть відсортовані всі елементи. Сутність методу полягає у тому, що на кожному кроці порівнюються пари сусідніх елементів. Якщо “лівий” елемент більший за “правий”, то вони міняються місцями. Тобто, здійснюється впорядкування кожної пари елементів. Порівняння здійснюємо, починаючи з кінця масиву в зворотному природному порядку напрямку. В результаті елементи з малими значеннями будуть рухатись в бік початку масиву. Якщо ми для розмаїтості будемо розглядати масив, розташований вертикально, і, уявляти елементи пухирцями в резервуарі з водою, що володіють «вагами», які повідають їхнім ключам, то кожен прохід по масиві проводить до «спливання» пухирця на відповідній його вазі рівень. Застосування методу розглянемо на прикладі впорядкування масиву з 10 елементів. Елементи, що переміщувались вліво, виділимо кольором. Вихідний масив: 44 55 12 42 94 18 06 67 32 13 Після першого кроку: 06 44 55 12 42 94 18 13 67 32 Після другого кроку: 06 12 44 55 13 42 94 18 32 67 Після останнього кроку: 06 12 13 18 32 42 44 55 67 94 Процедура для запису алгоритму має вигляд: procedure bubblesort (var a: massiv); var i,j: integer; x: integer; n1,n: integer; begin {границі масиву} n1:=low(a); n:= high (a); {впорядкування} for i:= n1 to n-1 do for j:= n downto i+1 do if a[j]<a[j-1] then begin x:=a[j]; a[j]:=a[j-1]; a[j-1]:=x; end; end; Число порівнянь для сортування даним методом дорівнює: C=1/2 (n2 - n), а кількість пересилань Mmin = 0, Mср = 3/4 (n2 - n), Mmax = 3/2 (n2 - n). Begin for i:= 1 to 10 do a[i]:= StrToInt(Memo1.Lines[i-1]); x:= StrToInt(Edit1.Text); left:= 1; // Початковий номер елемента тієї частини масиву, де відбуватиметься пошук right:= 10; // Кінцевий номер елемента тієї частини масиву, де відбуватиметься пошук f:= false; // Задане число в масиві поки що не знайдене while (left <= right) and not f do Begin m:= (left + right) div 2; // Номер елемента посередині тієї частини масиву, де далі продовжуватиметься пошук if x > a[m] then left:= m+1 // Змінюється початковий номер елемента тієї частини масиву, де відбуватиметься пошук else if x < a[m] then right:= m-1 // Змінюється останній номер елемента тієї частини масиву, де відбуватиметься пошук else f:= true; // Число в масиві знайшлося end; If f then Edit1.Text:= 'Число в масиві є' else Edit1.Text:= 'Числа в масиві немає'; end; Метод Можливості об'єкту. Оскільки Сірко — Собака, він може гавкати. Тому гавкати() є одним із методів об'єкту Сірко. Він може мати і інші методи, зокрема: місце(), або їсти(). В межах програми, використання методу має впливати лише один об'єкт; всі Собаки можуть гавкати, але треба щоб гавкала лише одна окрема собака. Успадкування В деяких випадках, клас може мати «підкласи», спеціалізовані версії класу. Наприклад, клас Собака може мати підкласи Коллі та Пікінес. В цьому випадку, Сірко буде екземпляром класу Вівчарка. Підкласи успадковують атрибути та поведінку своїх батьківських класів, і можуть вводити свої власні. Поліморфізм Поліморфізм означає залежність поведінки від класу, в якому ця поведінка викликається, тобто, два або більше класів можуть реагувати по різному на однакові повідомлення. Наприклад, якщо Собака отримує команду голос(), то у відповідь можна отримати Гав; якщо Свиня отримує команду голос (), то у відповідь можна отримати Хрю. Візуальне програмування -програма, в якому для передачі сематики вик більш як один вімір. Використання середовища візуального програмування (наприклад, Visual Basic) дозволяє поєднати «старий», математико-алго-ритмічний, і «новий», інформаційно-технологічний, підходи до навчання інформатики, які до цього часу існували в одному курсі практично незалежно один від одного. Повна відмова від математико-ал-горитмічного підходу призвела б до скорочення інтелектуально-логічного аспекту навчання, в той же час відмова в'щ вивчення сучасних інформаційних технологій ускладнила би формування основ загальної інформаційної культури. Крім того, системи візуального програмування є провідниками об'єктно-оріентованоїтехнопогїі Microsoft та ідеології ресурсів, які використовуються спільно, а з іншого боку пропонує користувачеві струк-туровану, а також просту та зручну мову запису і налагодження програм, що використовуються як при створенні нових програм, так і для програмування в офісних продуктах Microsoft. Програмування в середовищі Visual Basic суттєво відрізняється від програмування в процедурних, процедурно-орієнтованих мовах програмування, а також мовах логічного програмування. До основних принципів середовищ візуального програмування, які відрізняють їх від процедурних, слід віднести: — відокремлення елементів (об'єктів) програми, які пов'язані з інтерфейсом користувача, від її алгоритмічної частини; — швидкість і простота створення, модернізація інтерфейсу програм, в якому використовуються готові елементи (блоки), що реалізують деякі великі функції (процедури) управління програмою; — використання вже існуючих кодів, описаних іншими мовами програмування. Система візуального програмування базується на ідеї подійно-орі-єнтованого програмування: програма — сукупність об'єктів реального або віртуального світу, з кожним з яких пов'язаний деякий обмежений набір подій. При відбуванні кожної події форми і елементи управління можуть деяким чином «реагувати» на них відповідно до написаного програмного коду, який створюється користувачем для кожного об'єкта окремо. Програмний код пов'язаний з формами (вікнами) і елементами управління та використовується для реалізації відповідної реакції програми на дії користувача або відбування системної події. Стандартне програмування традиційно орієнтується на послідовний опис деякого конкретного процесу, тому написання програм є кро-піткою працею програміста. В такому процесі необхідно детально описувати кожний крок, передбачений програмою. Одним з недоліків такого стилю є те, що той, хто складає програму, повинен до програми все записати сам. У програмуванні, що орієнтоване на реакції на події, замість детального опису кожного кроку програміст повинен вказати, як слід реагувати на різні події (чи дії користувача), до яких, наприклад, можна віднести вибір вказівки, клацання кнопкою миші, переміщення миші тощо. На одні з подій можна передбачити деяку реакцію, інші—просто проігнорувати. При цьому створюється не одна велика програма, а кілька програм, які складаються із набору взаємодіючих процедур, що управляються користувачем. Використання середовища візуального програмування вже при складанні найпростіших програм надає можливість учням одразу спостерігати наслідки своєї роботи, що дуже важливо на перших кроках
Методи впорядкування масивів. Під сортуванням (впорядкуванням) звичайно розуміють процес перестановки об'єктів даної множини у визначеному порядку. Ціль сортування - полегшити наступний пошук елементів у відсортованій множині. Наприклад, якщо вихідна сукупність даних впорядкована, то значно полегшуються операції пошуку елементів із заданими властивостями. У загальному випадку елементом масиву може бути запис, що складається з декількох полів. Сортування може проводитися по кожному з полів, яке називається в цьому випадку ключем. Так, якщо список службовців сортується по коду службовців, то ключем є код, якщо за прізвищем - ключем є прізвище і т.п. Якщо ж елементами масиву є дані простого типу (цілий, дійсний і т.д.), то ключем буде саме значення елементу. Основні вимоги до сортування масивів – раціональне використання пам'яті. Це означає, що переупорядкування елементів потрібно виконувати в цьому ж самому масиві. Методи, що пересилають елементи з масиву А в масив В, нами розглядатись не будуть.. Існує кілька різних методів сортування, що відрізняються ступенем складності й ефективністю. Зручна міра ефективності утворюється при підрахунку числа С - необхідних порівнянь ключів і М – кількості пересилань елементів. Ці числа визначаються деякими функціями від числа n – кількості елементів, що впорядковуються.. Гарні алгоритми сортування вимагають порядку n•logn порівнянь, однак, вони досить складні. Щоб розібрати основні принципи сортувань, скористаємося спочатку розглядом щодо простих методів, що вимагають порядку n2 порівнянь ключів. Методи, що сортують елементи усередині масиву, можна розбити на чотири основних класи в залежності від покладеного в їх основі прийому: · сортування включеннями; · сортування вибором; · сортування обміном; При розгляді основних методів зробимо припущення: · в ролі структури даних для розгляду алгоритмів сортування оберемо одновимірний цілочисельний масив; · сортування буде здійснюватись без використання допоміжних масивів; · впорядкування здійснюється за зростанням; · в головній програмі діє такий опис даних. const n=...; {кількість елементів масиву визначається користувачем} type massiv = array[1..n] of integer; var a:massiv; i:integer; Методи сортування. Сортування простим вибором Сутність методу полягає у наступному. На першому кроці обирається найменший елемент і міняється місцями з першим. На другому кроці серед решти елементів знову обирається найменший елемент і міняється місцями з другим. Цей процес продовжується до повного впорядкування вихідного масиву. Проілюструємо роботу методу на прикладі масиву з 10 елементів. На кожному кроці найменший елемент виділятимемо іншим кольором. Вихідний масив: 44 55 12 42 94 18 06 67 32 13 Після першого кроку: 06 55 12 42 94 18 44 67 32 13 Після другого кроку: 06 12 55 42 94 18 44 67 32 13 На останньому кроці 06 12 13 18 32 42 44 55 67 94 При записі алгоритму на кожному кроці доцільно при пошукові найменшого елементу запам’ятовувати не сам елемент, а його номер. Це спростить алгоритм. Процедура сортування простим вибором має такий вигляд: procedure straightselection (var a: massiv); var i,j,k: integer; x: integer; n1,n: integer; begin {границі масиву} n1:= Low(a); n:= High (a); {впорядкування} for i:= n1 to n do begin k:=i; for j:= i+1 to n do if a[j]<a[k] then k:=j; if k >i then begin x:=a[i]; a[i]:=a[k]; a[k]:=x; end; end; end; Число C порівнянь ключів не залежить від початкового порядку ключів: C=1/2 (n2 +n–1). Мінімальне число пересилань у випадку початково упорядкованих елементів має значення: Mmin=0 Найбільше значення ця величина приймає у випадку, коли елементи вихідного масиву розташовані в зворотному порядку до впорядкування (тобто, впорядковані за спаданням): Mmax=trunc (n2/4). Сортування простим обміном Наведений нижче алгоритм сортування простим обміном заснований на принципі порівняння й обміну пари сусідніх елементів доти, поки не будуть відсортовані всі елементи. Сутність методу полягає у тому, що на кожному кроці порівнюються пари сусідніх елементів. Якщо “лівий” елемент більший за “правий”, то вони міняються місцями. Тобто, здійснюється впорядкування кожної пари елементів. Порівняння здійснюємо, починаючи з кінця масиву в зворотному природному порядку напрямку. В результаті елементи з малими значеннями будуть рухатись в бік початку масиву. Якщо ми для розмаїтості будемо розглядати масив, розташований вертикально, і, уявляти елементи пухирцями в резервуарі з водою, що володіють «вагами», які повідають їхнім ключам, то кожен прохід по масиві проводить до «спливання» пухирця на відповідній його вазі рівень. Застосування методу розглянемо на прикладі впорядкування масиву з 10 елементів. Елементи, що переміщувались вліво, виділимо кольором. Вихідний масив: 44 55 12 42 94 18 06 67 32 13 Після першого кроку: 06 44 55 12 42 94 18 13 67 32 Після другого кроку: 06 12 44 55 13 42 94 18 32 67 Після останнього кроку: 06 12 13 18 32 42 44 55 67 94 Процедура для запису алгоритму має вигляд: procedure bubblesort (var a: massiv); var i,j: integer; x: integer; n1,n: integer; begin {границі масиву} n1:=low(a); n:= high (a); {впорядкування} for i:= n1 to n-1 do for j:= n downto i+1 do if a[j]<a[j-1] then begin x:=a[j]; a[j]:=a[j-1]; a[j-1]:=x; end; end; Число порівнянь для сортування даним методом дорівнює: C=1/2 (n2 - n), а кількість пересилань Mmin = 0, Mср = 3/4 (n2 - n), Mmax = 3/2 (n2 - n).
|
||||
Последнее изменение этой страницы: 2016-12-10; просмотров: 601; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.26.8 (0.009 с.) |