Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт.docx
Скачиваний:
19
Добавлен:
28.03.2016
Размер:
578.75 Кб
Скачать

Тема2: Методи впорядкування одновимірних масивів. Мета: Вивчити алгоритми простих методів упорядкування. Навчитися застосовувати методи впорядкування при розв'язуванні задач

Засвоїти поняття

упорядкування масиву;

порядок упорядкування;

метод упорядкування;

бінарний пошук;

оцінка швидкодії алгоритмів упорядкування

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

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

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

Взагалі кажучи, в гірших випадках сортування вставками настільки ж погане, як і бульбашкове сортування і сортування за допомогою вибору, а в середньому вона лише трохи краща. Проте, у сортування вставками є дві переваги. По-перше, її поведінка природна. Іншими словами, вона працює менше всього, коли масив вже впорядкований, і найбільше, коли масив відсортований в зворотному порядку. Тому сортування вставками — ідеальний алгоритм для майже впорядкованих списків. Друга перевага полягає в тому, що цей алгоритм не міняє порядок однакових ключів[1]. Це означає, що якщо список відсортований по двох ключах, то після сортування вставками він залишиться впорядкованим по обох.

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

  1. Знаходить у списку найменше значення

  2. Міняє його місцями із першим значеннями у списку

  3. Повторює два попередніх кроки, доки список не завершиться (починаючи з другої позиції)

Фактично, таким чином ми поділили список на дві частини: перша (ліва) — повністю відсортована, а друга (права) — ні.

Завдання 1: Упорядкувати вибором масив цілих чисел за зростанням.

Код програми

#include <iostream>

using namespace std;

int main()

{

cout<<"Solonenko Denys"<<endl;

int n,i,l,c;

cout<<"Kilkist elementiv: "<<endl;

cin>>n;

int a[100];

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

{

a[i]=rand()%50 - 15;

}

cout<<"Vxidnuy masiv: ";

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

{

cout<<a[i]<<" ";

}

cout<<endl;

cout<<endl;

cout<<"Metod vubory: ";

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

{

int t;

int min=a[i];

int z=0;

for(int j=i+1;j<n;j++)

{

if(min>a[j]){min=a[j]; t=j;z++;}

}

if(z==0) continue;

int r=a[i];

a[i]=min;

a[t]=r;

}

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

cout<<a[i]<<" ";

cout<<endl;

system("pause");

return 0;

}

Інтерфейс програми

Мал.1. Приклад виконання завдання №1

Завдання 2: Упорядкувати вставлянням масив цілих чисел за спаданням.

Код програми

# include <iostream>

# include <time.h>

using namespace std;

int main()

{

srand(time(0));

int n,i,j,x,temp,key;

cout<<"kilkist elemrntiv";

cin>>n;

int a[100];

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

{

a[i]=rand()%10;

cout<<a[i]<<endl;

}

cout <<"vyhidnyi massif:"<<endl;

for(i=0;i<n-1;i++)

{

key=i+1;

temp=a[key];

for(j=i+1;j>0;j--)

{

if(temp>a[j-1])

{

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

key=j-1;

}

}

a[key]=temp;

}

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

{

cout<<a[i]<<" ";

cout<<endl;

}

system ("pause");

return 0;

}

Інтерфейс програми

Мал.2. Приклад виконання завдання №2