Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторний практикум інф сис та стр даних.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.39 Mб
Скачать

Порядок виконання роботи та методичні рекомендації щодо виконання роботи

1. При підготовці до лабораторної роботи, необхідно засвоїти теоретичний матеріал по темі і підготуватись до контрольного опитування по розумінню питань даної тематики.

2. Згідно з індивідуальним завданням розробити алгоритм розв’язання задачі.

3. Підготувати програмну реалізацію розробленого алгоритму. Засобами вбудованого тексто-вого редактора інтегрованого середовища набрати текст підготовленої програми. Відкомпілювати, налагодити та виконати програму.

4. Протестувати програму згідно зі складеною системою тестів і, при потребі, відкоректувати текст програми. Проаналізувати отримані результати.

5. Написати контрольне опитування по темі.

6. Оформити звіт по роботі.

Без підготовкі до лабораторної роботи (програмної реалізації розробленого алгоритму) студент до роботи не допускається.

Вимоги до оформлення звіту

  1. Отримати індивідуальне завдання у викладача;

  2. Уточнити завдання(можливі різні трактування завдання);

  3. Написати програмну реалізацію виконання індивідуального завдання із використанням вивченого методу(алгоритму) на даній лабораторній роботі;

  4. Протестувати на наявність логічних помилок програми;

  5. Оформити звіт відповідно до стандарту;

  6. Захистити виконану роботу.

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

  1. Які ви знаєте методи сортування?

  2. Який метод сортування був розглянений на даній лабораторній роботі?

  3. Від чого прямо – залежним являється швидкість сортування?

  4. Опишіть характеристики даного методу.

  5. Порівняєте даний метод із іншими методами сортування вам відомими.

  6. Наскільки являється ефективним даний метод сортування?

  7. Чи використовують даний метод на практиці, і наскільки часто?

  8. Чи можлива оптимізації даного методу? Якщо так, то яка? Якщо ні, то по яких причинах?

  9. Чим оригінальним виділяється даний метод від інших?

Приклад виконання лабораторної роботи #7

2. Теоретичні відомості

Розташуємо масив зверху вниз, від нульового елементу - до останнього.

Ідея методу: крок сортування полягає в проході від низу до верху по масиву. По дорозі є видимими пари сусідніх елементів. Якщо елементи деякої пари знаходяться в неправильному порядку, то міняємо їх місцями.

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

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

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

Завдання:

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

Код програми

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include<conio.h>

void bulbashka(int N[], int d)

{

int k,l,tmp;

for (k=0;k<d-1;k++)

for (l=0;l<d-k-1;l++)

if (N[l+1]<N[l])

{

tmp=N[l];

N[l]=N[l+1];

N[l+1]=tmp;

}

}

int verify(int N[], int d)

{

int k;

for (k=0;k<d-1;k++)

if (N[k]>N[k+1])

return 0;

return 1;

}

void main(void)

{

int N[100000],M[100000];

int i,j,m;

int C[5]={10000,20000,50000,80000,100000};

clock_t start, end;

clrscr();

for (i=0;i<5;i++)

{

for (j=0;j<C[i];j++)

N[j]=rand();

start=clock();

bulbashka(N, C[i]);

end=clock();

break;

printf ("%d - %.3f - %s\n", C[i], (end-start)/CLK_TCK, verify(N, C[i]) ? "OK" : "Error");

}

getch();

}

Протокол роботи програми: