А   Б  В  Г  Д  Е  Є  Ж  З  І  Ї  Й  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч  Ш  Щ  Ю  Я 


Проблема - сортування

Проблема сортування за допомогою машини повертає нас до кінця дев'ятнадцятого століття, коли Герман Холлернт винайшов машини для обробки даних про перепис населення.

Проблема сортування в разі перегортання двоїста. З одного боку, необхідно визначити, як будуть себе вести відомі алгоритми сортування, коли у них менше пам'яті, ніж їм необхідно для коду та даних.

Проблема сортування невпорядкованого масиву відноситься в обчислювальної техніки до класичних. Вона здається простою, адже всім доводилося виконувати будь-яку механічну сортування, чи була то розкладка гральних карт, гардеробних номерків, карток з бібліотечного каталогу або грошових рахунків. Хоча перші програми сортування були написані фон Нейманом в 1945 році, будь-якого значного поступу в теорії сортування не спостерігалося протягом наступних двадцяти років.

Нижче показано, як вирішити проблему сортування текстових полів в числовому порядку.

Кордон занадто мала. | Кордон занадто велика. Завдання пошуку медіани тісно пов'язана з проблемою сортування, оскільки очевидний метод визначення медіани полягає в тому, щоб впорядкувати п елементів, а потім вибрати середній елемент. Однак поділ, яке виконує програмою 2.9 дозволяє потенційно відшукувати медіану значно швидше. Цей прийом можна легко узагальнити і для пошуку серед п елементів k - ro найменшого числа. Хоаром[2.4], працює наступним чином.

Сортування і пошук на бінарному дереві) Однією з проблем сортування бінарного дерева є те, що послідовність, в якій вставляються дані, впливає на його структуру: для того ж самого набору даних різна послідовність їх появи може кардинально змінювати форму дерева. Продуктивність обробки бінарного дерева алгоритмами сортування та пошуку чутлива до структури дерева. Яку структуру матиме бінарне дерево, якщо дані вставлялися в нього в порядку зростання.

Внесок різних операцій під час виконання чотирьох алгоритмів видалення невидимих поверхонь. Сазерленд[134]вважає, що проблема видалення невидимих поверхонь є в основному проблемою сортування.

Як проблема сортування масивів, так і проблема сортування зв'язкових списків представляють безсумнівний інтерес: в процесі розробки власних алгоритмів ми зіткнемося з деякими базовими завданнями, для яких краще всього підійде послідовний розподіл елементів, для інших же завдань більше підходить структура зв'язкових списків. Деякі з класичних методів володіють настільки високим ступенем абстракції, що можуть однаково ефективно застосовуватися як до масивів, так і до зв'язковим списками; в той же час інші максимально ефективно виявляють себе на якомусь одному виді зазначених вище об'єктів сортування. Інші види обмежень доступу також іноді представляють певний інтерес.
 Програма 611 представляє собою приклад сортування за вказівником, до розгляду якої в узагальненому вигляді ми зараз перейдемо. Інший простий підхід до проблеми сортування без (безпосередніх) переміщень елементів полягає в побудові індексного масиву, причому доступ до ключів елементів здійснюється тільки для того, щоб виконати операцію порівняння. Щоб отримати ефект сортування, використовується другий масив, масив а індексів елементів.

Як проблема сортування масивів, так і проблема сортування зв'язкових списків представляють безсумнівний інтерес: в процесі розробки власних алгоритмів ми зіткнемося з деякими базовими завданнями, для яких найкраще підійде послідовний розподіл елементів, для інших же завдань більше підходить структура зв'язкових списків. Деякі з класичних методів володіють настільки високим ступенем абстракції, що можуть однаково ефективно застосовуватися як до масивів, так і до зв'язковим списками; в той же час інші максимально ефективно виявляють себе на якомусь одному виді зазначених вище об'єктів сортування. Інші види обмежень доступу також іноді представляють певний інтерес.

Як прю & лема еор - tupOHKH масивів, так н проблема сортування садзни списків представляють безсумнівний інтерес: в процес розробки власних ал горить м ов ми зіткнемося з деякими базовим до завданнями, для який краще всет підійде последонатсдь-ній рйспрелеленне зло ментів для інших же задй більше півходу т структура зв'язкових списків. Нексппоріс і 5 класичних методів мають настільки РУСО до і ступенем абстракції, що можуть однаково ефективно застосовуватися як до іассршам, тах і до зв'язковим списками; в той же іремл інші максимально ефективно прояшнют сс & н нл якомусь сш рм вигляді зазначених више об'єктів сортува кк, Інші види обмежень доступу тахжс цноглі представляють певний інтерес.

Послідовність ключів, яка спочатку збільшується, а потім зменшується (або спочатку зменшується, а потім збільшується), називається Бітон (bitonic) послідовністю. Сортування Бітон послідовності еквівалентна злиття, але іноді зручно представити проблему злиття як проблему Бітон сортування; розглянутий метод, що дозволяє уникнути порівнянь із службовим елементом, можна розглядати як простий приклад таких угруповань.

Середньорічна зміна складу відходів,. по масі 28.

Частка скла в відходах значно не зростати в наступні 30 років. Наявність скла ускладнює роботу оператора печі для спалювання. Якщо проблема сортування скла не буде вирішена, то треба йти по шляху розробки дуже дешевих пластмасових упаковок для напоїв і продуктів, особливо біо-розкладаються.

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

Мова АПЛ, що нагадує своєю компактністю і можливостями сучасні математичні теорії, зародився, мабуть, раніше, ніж телетайпна алгебра Фортрана і Алгола. АПЛ був задуманий їм не як мова програмування. При підготовці своєї дисертації по машинному рішенням лінійних диференціальних рівнянь для економіко-математичних моделей типу витрати-ви-пуск[3]автор зіткнувся з алгоритмом, пов'язаним з проблемами сортування, який погано піддавався опису, в результаті чого з'явилася необхідність винайти оригінальну нотацію. Спочатку його творіння було відомо в Гарварді як нотація Айверсона.

Це призвело до розвитку обчислювальних методів, які можна застосувати до широкого кола комбінаторних задач; деякі з цих методів ми обговоримо в цій главі. Найбільш фундаментальним і часто використовуваним є алгоритм перебору з поверненням (розд. Теорія графів відноситься до областей комбінаторної математики, мають найширші додатки; в розд. Розділ 2.5 містить вступ в проблему сортування, яка непосвяченим часто здається очевидною, а в дійсності пов'язана з глибокими математичними дослідженнями і надзвичайно важлива практично. Якби вдалося з'ясувати, чим зайняті в довільно заданий момент часу всі ЕОМ світу, то виявилося б, що велика їх частина займається саме сортуванням.

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

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