Основні теоретичні відомості

Завдання на лабораторну роботу

Мета роботи

Лабораторна робота № 7 Вивчення методів сортування

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

Перевантаження функцій

Мета перевантаження функцій складається в тому, щоб функція із одним ім’ям по-різному виконувалася та повертала різні значення при звертанні до неї із різними за типом та кількістю фактичними параметрами.

Для забезпечення перевантаження функцій необхідно для кожного імені визначити скільки різних функцій пов’язано з ним, тобто скільки варіантів сигнатур є допустимими при зверненні до них. Будемо вважати, що функція вибору максимального значення елемента із масиву має працювати для масивів типу int, long, float, double. В цьому випадку треба написати чотири різні варіанти функції з одним ім’ям.

int max (int a, int b);

float max (float a, float b);

char max (char a, char b);

При виклику перевантаженої функцій компілятор точно визначає, яку з версій функції треба використовувати. Рішення компілятора основане на результатах аналізу кількості та типу аргументів. Визивається функція, що найточніше відповідає “моделі” виклику.

1. Що таке блок?

2. Що таке функція на мові С(С++)? Для чого вона застосовується?

3. Опишіть механізм передачі параметрів у функцію.

4. Як використовується оператор return у функції?

5. Що ми маємо на увазі, коли говоримо про тип функції?

6. Чим відрізняються прототип, визначення і виклик функції?

7. Які можливо передати параметри до функції main()?

8. Що таке перевантаження функцій? Для чого воно застосовується?

9. Навести приклади прототипів перевантажених функцій із сигнатурами, що розрізняються за кількістю аргументів і за типом аргументів.


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

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

1. Ознайомитися з методами сортування масивів.

2. Написати функції до двох методів сортування (за вибором викладача). Використати перевантаження функцій для сортування масивів з елементами типів int, char, float; використати динамічну пам’ять.

3. Сформувати послідовності з

а) 5000 випадкових чисел;

б) 10000 випадкових чисел.

4. Відсортувати одержані послідовності двома обраними викладачем методами.

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

6. Одержані результати звести у таблицю (у програмі).

7. Оформити та захистити звіт.

Існує досить багато різних методів сортування, основними з яких є:

а) метод вибору;

б) метод „пузирька”;

в) метод вставок;

г) метод підліку;

д) метод Шелла;

Коротко зупинимось на деяких з них.

Сортування методом вставки (by insection)

Елементи масиву починаючи з другого послідовно додаються у необхідне місце вже упорядкованого масиву, що розташований зліва від поточного елементу a[i]. Позиція включення заздалегідь не відома. Вона визначається порівнянням a[i] з a[i-1], a[i-2] доколи не буде знайдений лівий кінець масиву. Приклад.

 

const n=10;

int a[n], x, i,j;

…..

for(i=0;i<10;i++){

x=a[i];

j=i;

while(x<a[j-1]){

a[j]=a[j-1]; j--;

}

a[j]=x;

}

…..

 

res (початок) 2 1 8 5
res (i = 1) 1 8 5
res (i = 2) 8 5
res (i = 3) 5
res (i = 4)

Відсортований масив res = {1, 2, 4, 5, 8}.