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

Основні теоретичні положення

Будуватимемо готову послідовність, починаючи з лівого кінця масиву. Алгоритм складається з n послідовних кроків, починаючи від нульового і закінчуючи (n-1) -м.

На i-м кроці вибираємо найменший з елементів а[i]... а[n] і міняємо його місцями з а[i]. Послідовність кроків при n=5 зображена на малюнку нижче.

Незалежно від номера поточного кроку i, послідовність а[0]...a[i] (виділена курсивом) є впорядкованою. Таким чином, на (n-1) -му кроці вся послідовність, окрім а[n] виявляється відсортованою, а а[n] стоїть на останньому місці по праву: всі менші елементи вже пішли вліво.

template<class T> void selectSort(T a[], long size){

long i, j, k;

T x;

for( i=0; i < size-1; i++){ // i - номер поточного кроку

k=i; x=a[i];

for( j=i+1; j < size; j++) // цикл вибору найменшого елементу

if ( а[j]< x ) {

k=j; x=a[j]; // k - індекс найменшого елементу

}

а[k]= а[i]; а[i]= x; // міняємо місцями найменший з а[i]

}

}

aбо,

for(i=0;i<size-1;i++) {

min = i;

for(j=i+1;j<size;j++) {

if(a[j] < a[min]) min = j;

}

tmp = a[i]; a[i] = a[min]; a[min] = tmp;

}

Для знаходження найменшого елементу з n+1 розглянутий алгоритм здійснює n порівнянь. З урахуванням того, що кількість елементів, що розглядаються на черговому кроці, зменшується на одиницю, загальну кількість операцій:

n + (n-1) + (n-2) + (n-3) + ... + 1 = 1/2 * ( n2+n ) = Theta(n2).

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

Алгоритм не використовує додаткової пам'яті: всі операції відбуваються "на місці".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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