Обчислення суми елементів масиву

Сортування із злиттям

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

Один з популярних алгоритмів внутрішнього сортування із злиттям заснований на наступних ідеях (для простоти вважатимемо, що число елементів в масиві, як і в нашому прикладі, є ступенем числа 2). Спочатку пояснимо, що таке злиття. Хай є два відсортованих в порядку зростання масиву p[1], p[2] ..., p[n] і q[1], q[2] ..., q[n] і є порожній масив r[1], r[2] ..., r[2?n], який ми хочемо заповнити значеннями масивів p і q в порядку зростання. Для злиття виконуються наступні дії: порівнюються p[1] і q[1], і менше із значень записується в r[1]. Припустимо, що це значення p[1]. Тоді p[2] порівнюється з q[1] і менше із значень заноситься в r[2]. Припустимо, що це значення q[1]. Тоді на наступному кроці порівнюються значення p[2] і q[2] і так далі, поки ми не досягнемо меж одного з масивів. Тоді залишок іншого масиву просто дописується в "хвіст" масиву r.

Для сортування із злиттям масиву а, а, ..., а[n] заводиться парний масив b[1], b[2] ..., b[n]. На першому кроці проводиться злиття а[1] і а[n] з розміщенням результату в b[1], b[2], злиття а[2] і а[n-1] з розміщенням результату в b[3], b[4] ..., злиття а[n/2] і а[n/2+1] з приміщенням результату в b[n-1], b[n]. На другому кроці проводиться злиття пар b[1], b[2] і b[n-1], b[n] з приміщенням результату в а, а, а, а, злиття пар b[3], b[4] і b[n-3], b[n-2] з приміщенням результату в а, а, а, а, ..., злиття пар b[n/2-1], b[n/2] і b[n/2+1], b[n/2+2] з приміщенням результату в а, а, а, а[n]. І так далі На останньому кроці, наприклад (залежно від значення n), проводиться злиття послідовностей елементів масиву завдовжки n/2 а, а, ..., а[n/2] і а, а, ..., а[n] з приміщенням результату в b[1], b[2] ..., b[n].

Для випадку масиву, використовуваного в наших прикладах, послідовність кроків показана в таблиці 3.

Таблиця 3. Приклад сортування із злиттям

Початковий стан масиву 8 23 5 65 44 33 1 6
Крок1 6 8 1 23 5 33 44 65
Крок2 6 8 44 65 1 5 23 33
Крок3 1 5 6 8 23 33 44 65

 

 

Мал. 25.

 

 

Приклад злиття двох масивів показаний на малюнку 25.

Порівняння часу сортувань

Зображений нижче графік ілюструє різницю в ефективності вивчених алгоритмів.

· коричнева лінія: сортування бульбашкою; · синя лінія: шейкер-сортування; · рожева лінія: сортування вибором; · жовта лінія: сортування вставками; · блакитна лінія: сортування вставками із сторожовим елементом; · фіолетова лінія: сортування Шелла

Обчислення суми елементів масиву

Даний масив X, що складається з nелементів. Знайти суму елементів цього масиву. Процес накопичення суми елементів масиву достатньо простий і практично нічим не відрізняється від підсумовування значень деякої числової послідовності. Змінною Sпривласнюється значення рівне нулю, потім послідовно підсумовуються елементи масиву X. Блок-схема алгоритму розрахунку суми приведена на мал. 3.5.

Обчислення добутка елементів масиву

Даний масив X, що складається з nелементів. Знайти добуток елементів цього масиву. Рішення цієї задачі зводиться до того, що значення змінної Р, в яку заздалегідь була записана одиниця, послідовно умножається на значення i-гоелементу масиву. Блок-схема алгоритму приведена на мал. 3.6.

Мал. 26. Алгоритм обчислення суми елементів масиву Мал. 27. Обчислення добутка елементів масиву

Видалення елементу з масиву

Необхідно видалити з масиву X, що складається з nелементів, m-йпо номеру елемент. Для цього досить записати елемент (m+1) на місце елементу m, (m+2)- на місце (m+1) і так далі, n- на місце (n-1) і при подальшій роботі з цим масивом використовувати n-1елемент (мал. 28).

 

Мал. 28. Процес видалення елементу з масиву

 

Алгоритм видалення з масиву Хрозмірністю nелементу з номером mприведений на мал. 29.

Мал. 29 Алгоритм видалення елементу з масив

Контрольні запитання:

1.Ідеальний алгоритм сортування.***2. Параметри оцінки алгоритмів.***3. Які основні алгоритми сортування.***4. Як провести аналіз сортування за часом.****

 

Література:

1. Иванова Г.С., Ничушкина Т.Н., Пугачев Е.К. И21 Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2001. - 320 с, ил.

2. Архангельский А.Я. , Программирование в Delphi 7. М.: ООО «Бином-Пресс», 2003 г. 1152 с.: ил.

3. Колосов С.В.,Программирование в среде Delphi. Учеб. пособие для студентов специальностей «Автоматизированные системы обработки информации» и «Автоматическое управление в технических системах» БГУИР., - Мн.:БГУИР, 2005,-164 с: ил. 34.

4. Пестриков В. М., Маслобоев Л. Н, П28 Delphi на примерах, — СПб.: БХВ-Петербург, 2005. — 496 с: ил. ISBN 5-94157-713-3

5. Дарахвелидзе П. Г., Марков Е. П.Программирование в Delphi 7. — СПб.: БХВ-Петербург, 2003. — 784 с: ил.

6. Алексеев В.Е., Таланов В.А. Графы и алгоритмы. Структуры данных. Модели вычислений БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2006

7. Костюкова Н.И. Графы и их применение. Комбинаторные алгоритмы для программистов БИНОМ. Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру, 2007