Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Приклад виконання завдання




Лабораторна робота 11

 

Тема: Сортування даних

Мета роботи: отримання практичних навичок складання і відлагодження програм сортування даних.

 

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

Дано множину {Аi} (i=[1;n]), елементи якої індексовано довільним чином. Небхідно індексувати {Аi} так, щоб із i < j слідувало Xi < Xj (i, j=[1;n]) (упорядкованість по зростанню) чи Xi > Xj (впорядкованість за спаданням). Процес сортування полягає у послідовних перестановках елементів множини {Аi} доти, доки їх індексація не узгодиться з їх упорядкованістю.

 

Сортування наданих методом обміну(метод „бульбашки”)

Основна ідея методу полягає у тому, що на кожній i-ій ітерації циклу порівнюють два сусідніх елементи Аi i Аi+1 (i=[1;n-1]). Якщо пара розташована не попорядку то елементи Ai i Ai+1 міняють місцями і реєструють факт такої перестановки. Перегляд повторюється дот тих пір, коли під час перегляду масиву від початку до кінця не буде більше перестановок.Таким чином найменший (найбільший) елемент опиниться на своєму місці у множині{Аi}.

Метод має невелику швидкодію (середня кількість порівнянь дорівнює (n*n-n)/2), є малоефективним для множин великого розміру, але має найбільш прозорий алгоритм.

 

Сортування наданих методом вибору

Основна ідея методу полягає у тому, що на кожній i-ій (i=[1;n-1]) ітерації зовнішнього циклу серед елементів множини {Aj} (j=[i+1;n]) шукають індекс k елементу Ak, який є найменшим (сортування по зростанню) чи найбільшим (сортування за спаданням) у порівнянні з елементом Ai і переносять цей елемент в кінець послідовності (дані Аk и Аi міняють місцями). Надалі, характерною особливістю методу є наявність двох незалежних частин послідовності – невпорядкованої (елементи, що залишилися) і впорядкованої. Метод має більшу швидкодію від попереднього, оскільки на кожній (i+1) -ій ітерації розглядається множина {X}, менша ніж на i-ій ітерації, за рахунок збільшення мінімального індексу множини на 1. Загальна кількість порівнянь наданих дорівнює n*n/2.

 

Сортування наданих методом включення

Основна ідея алгоритму: є впорядкована частина у яку черговий елемент поміщається (включається) так, що впорядкованість зберігається. Метод полягає у тому, що на кожній i-ій ітерації зовнішнього циклу (i=[2;n]) елемент Аi порівнюється з елементами Аj (j=[1;i-1]), і якщоАi < Аj (сортування по зростанню) чи Аi > Аj (сортування за спаданням), то елементи від Аj до Аi-1 зсувають праворуч на одну позицію, а еле-мент Аi розташовують на місці елементу Аj (таким чином елемент Xi ніби "розсовує" множину {А} з позиції j праворуч).

Кількість операцій у найгіршому випадку складає n*n/4 порівнянь і вставок. Метод можна рекомендувати для сортування малих множин.

 

Завдання для самостійної роботи

1. Познайомитися з задачею сортування даних

2. Вивчити основні методи сортування масивів: метод обміну, метод вибору, метод включення

3.Скласти і відлагодити окремі програми сортування даних масиву {Аi}n методами: обміну, вибору і включення.

Індивідуальне завдання синтезувати самостійно з урахуванням наступ-них вимог:

· Масив {Аi}n містить випадкові числа з інтервалу [K1;K2] кількістю у межах [10...20].

· Масив {Ai}n можна сортувати за зростанням чи за спаданням.

· Повинна бути задана нескладна умова участі елементів масиву у сортуванні (наприклад, сортування тільки елементів з парними чи непарними індексами, додатних чи від’ємних, цілих, дійсних чи текстових даних і т.д.).

 

Приклад виконання завдання

Елементи цілочисельного масиву {Аi}n (i=[1;n]), які є випадковими числами з інтервалу [K1;K2], відсортувати за зростанням методами обміну, вибору і включення.

 

// Програма сортування масиву методом обміну(метод „бульбашки)”

#include <iostream.h>

#include <conio.h>

void Sort (int A[], int n)

{ int i, found;

do {

found = 0;

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

if (A[i] > A[i+1]){

int cc= A[i]; A[i] = A[i+1]; A[i+1] = cc

found++;

}

} while (found!=0);

}

void main (void)

{ int i, Size, K1, K2;

clrscr ();

cout << endl << "Введіть розмір масиву і межі K1 та K2 змінени даних: ";

cin >> Size >> K1 >> K2;

int Array[Size];

randomize ();

for (i = 1; i <= Size; i++) Array [i] = random (K2-K1+1) + K1;

cout << endl << "Несортований масив:" << endl;

for (i = 1; i <= Size; i++) cout << Array[i];

Sort (Array, Size);

cout << endl << "Сортований масив:" << endl;

for (i = 1; i <= Size; i++) cout << Array[i];

}

Програма сортування масиву методом вибору

#include <iostream.h>

#include <conio.h>

void Sort (int in[]? Int n)

{

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

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

if (in[j]<in[k]) k=j;

int c=in[k]; in[k]=in[i];in[i]=c;

}

}

void main (void)

{ int i, Size, K1, K2;

clrscr ();

cout << endl << "Введіть розмір масиву і межі K1 та K2 змінени даних: ";

cin >> Size >> K1 >> K2;

int Array[Size];

randomize ();

for (i = 1; i <= Size; i++) Array [i] = random (K2-K1+1) + K1;

cout << endl << "Несортований масив:" << endl;

for (i = 1; i <= Size; i++) cout << Array[i];

Sort (Array, Size);

cout << endl << "Сортований масив:" << endl;

for (i = 1; i <= Size; i++) cout << Array[i];

Програма сортування масиву методом включення

#include <iostream.h>

#include <conio.h>

void Sort (int in[]? Int n)

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

int v=in[i];

for (int k=0; k<1j <=1; kj++)

if (in[k] < v) break;

for(int j=i-1;j>=k;j--)

int[j+1]=in[j];

in[k]=v;

}}

void main (void)

{ int i, Size, K1, K2;

clrscr ();

cout << endl << "Введіть розмір масиву і межі K1 та K2 зміни даних: ";

cin >> Size >> K1 >> K2;

int Array[Size];

randomize ();

for (i = 1; i <= Size; i++) Array [i] = random (K2-K1+1) + K1;

cout << endl << "Несортований масив:" << endl;

for (i = 1; i <= Size; i++) cout << Array[i];

Sort (Array, Size);

cout << endl << "Сортований масив:" << endl;

for (i = 1; i <= Size; i++) cout << Array[i];

}

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

1. Сформулюйте загальну задачу сортування даних.

2. Якими експлуатаційними показниками характеризуються методи сортування даних?

3. Викладіть суть сортування даних методами: обміну, вибору і включення.

4. Дайте порівняльну характеристику методів сортування.

5. Дайте вичерпні пояснення до розроблених програм.

 





Поделиться с друзьями:


Дата добавления: 2017-01-21; Мы поможем в написании ваших работ!; просмотров: 219 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2191 - | 2111 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.