Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

Информатика->Реферат
Редактор имеет главное меню, в котором пользователь может выбрать нужное действие. Также ряды кнопок расположены на панели горячих клавиш. Это кнопки ...полностью>>
Информатика->Реферат
1. Реляционные базы данныхЧто такое базы данных?В самом общем смысле база данных - это набор записей и файлов, организованных специальным образом. В к...полностью>>
Информатика->Реферат
Нейтрализация ошибок осуществляется по методу Айронса, то есть, спускаясь по синтаксическому дереву без возврата по контексту, при обнаружении тупиков...полностью>>
Информатика->Реферат
В конце 60-х годов начался серийный выпуск сравнительно небольших и дешевых мини-ЭВМ. Их предназначали для предприятий и организаций, где установка вы...полностью>>

Главная > Курсовая работа >Информатика

Сохрани ссылку на реферат в одной из сетей:

Апроксимуючи цю суму інтегралом, отримаємо наступну оцінку :

, де .

Однак істинна кількість порівнянь на кожному етапі може бути більшою ніж log(i) на 1. Тому

.

Нажаль покращення, що породженні введенням бінарного пошуку, стосується лише кількості операцій порівняння, а не кількості потрібних переміщень елементів. Фактично кількість перестановок M залишається величиною порядку N2. Для досить швидких сучасних ЕОМ рух елемента, тобто самого ключа і зв’язаної з ним інформації, займає значно більше часу, ніж порівняння самих ключів. Крім того сортування розглядуваним методом вже впорядкованого масиву за рахунок log(i) операцій порівняння вимагатиме більше часу, ніж у випадку послідовного сортування з прямим включенням. Очевидно, що кращий результат дадуть алгоритми, де перестановка, нехай і на велику відстань, буде пов’язана лише з одним елементом, а не з переміщенням на одну позицію цілої групи.

2.3 Сортування прямим вибором

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

1) на i-ому етапі серед елементів mas[i], mas[i+1],…,mas[n] вибирається елемент з найменшим ключем mas[j]=min ;

2) проводиться обмін місцями mas[j] та mas[i].

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

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

На першому кроці переглядаємо весь масив від індексу 1 до індексу n (в даному випадку n=7) з метою пошуку найменшого елемента масиву. Далі беремо цей індекс на кожному кроці записуємо в комірку з індексом 0. По закінченню проходження циклу міняємо елементи з індексом і-початкове та елемент індекс якого записаний у комірці під номером 0.

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

Маємо, що мінімальний елемент решти масиву знаходиться в позиції 5, при його пошуку індекс заноситься в комірку з індексом 0. Знову проводимо обмін.

Запишемо саму програму реалізації даного методу (Файл SORT_3.CPP):

#include

#include

#include

int mas[1000];

void vuv(int s)

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

cout<

cout<

}

main()

{clrscr();

cout<<"Vvedit kilkist elementiv masuvy - n"<

int n,tmp,k;

cin>>n;

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

{

cout<<"vvedit "<

cin>>mas[i];

}

clrscr();

cout<<"Maemo masuv "<

vuv(n);

//Sort_prjamum vuborom

for(int j=1;j

{k]=j;

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

if (mas[i]k]=i;}

mas[0]=mas[k]; mas[k]=mas[j]; mas[j]=mas[0];

}

cout<<"Masuv vidsortovanuy "<

vuv(n);

getch();

return 0;

}

Аналіз прямого вибору. Очевидно, що кількість порівнянь ключів Ci на i-ому виборі не залежить від початкового розміщення елементів і дорівнює N-i. Таким чином

Кількість же перестановок залежить від стартової впорядкованості масиву. Це стосується переприсвоєнь у внутрішньому циклі по j при пошуку найменшого ключа. В найкращому випадку початково впорядкованого масиву Mi=4 ; в найгіршому випадку зворотно впорядкованого масиву Mi=Ci+4 ; для довільного масиву рівномовірно можливе значення Mi=Ci/2+4. Тому для оцінки ефективності алгоритму по перестановках можна скористатися наступними співвідношеннями:

;

;

.

Як і в попередньому випадку алгоритм прямого вибору описує процес стійкого сортування.

2.4 Сортування прямим обміном

Даний метод базується на повторенні етапів порівняння сусідніх ключів при русі вздовж масиву. Якщо наступний елемент виявиться меншим від попереднього, то відбувається обмін (звідси і назва методу). Таким чином, при русі з права наліво за один етап найменший ключ переноситься на початок масиву. Зрозуміло, що кожен наступний прохід можна закінчувати після позиції знайденого на попередньому етапі мінімального елемента, оскільки всі елементи перед ним вже впорядковані. Розглядуваний процес дещо нагадує виштовхування силою Архімеда бульбашки повітря у воді. Тому цей алгоритм ще називають "бульбашковим" сортуванням. Аналогічно, метод "камінця" базуються на зворотній дії. Тобто, якщо етапи порівняння та обміну проводити зліва направо, то відбуватиметься виштовхування найбільшого елемента вкінець масиву. Очевидно такий процес відповідає опусканню під дією сили тяжіння камінця у воді.

Обидва алгоритми згідно із визначаючим принципом вимагають досить великої кількості обмінів. Тому виникає питання, чи не вдасться підвищити їх ефективність хоча б за рахунок зменшення операцій порівняння? Цього можна добитися при допомозі наступних покращень:

1) фіксувати, чи були перестановки в процесі деякого етапу. Якщо ні, то - кінець алгоритму ;

2) фіксувати крім факту обміну ще і положення (індекс) останнього обміну. Очевидно, що всі елементи перед ним або після нього відповідно для сортування "бульбашкою" або "камінцем" будуть впорядковані;

3) почергово використовувати алгоритми "бульбашки" і "камінця". Тому що для чистої "бульбашки" за один прохід "легкий" елемент виштовхується на своє місце, а "важкий" опускається лише на один рівень. Аналогічна ситуація з точністю до навпаки і для "камінця". Такий алгоритм називається "шейкерним" сортуванням.

2.4.1 Метод "бульбашки"

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

На першому етапі перевіряємо чи елемент із номером [і-1] не є більший за елемент з номером [i], якщо так, то міняємо місцями. Далі зменшуємо і на 1 з нову проводимо порівняння до тих пір поки і не рівне j (на першому проході = 2). Зробивши перший прохід масиву, ми матимемо на місці 1 елемента найменший. Проходить якби виштовхування найменшого в ліву частину масиву.

Отже, після першого проходу маємо масив, де перший елемент з індексом [1] є вже впорядкований.

Далі аналогічним чином проводимо впорядкування іншої частини масиву, на другому кроці і буде змінюватися від n (n=7 у даному прикладі) до 3.

Запишемо саму програму реалізації даного методу (Файл SORT_4.CPP):

#include

#include

#include

int mas[1000];

void vuv(int s)

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

cout<

cout<

}

main()

{clrscr();

cout<<"Vvedit kilkist elementiv masuvy - n"<

int n,tmp,k;

cin>>n;

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

{

cout<<"vvedit "<

cin>>mas[i];

}

clrscr();

cout<<"Maemo masuv "<

vuv(n);

//Sort_Bulbashka

for(int j=2;j<=n;j++)

for(i=n;i>=j;i--)

{

if (mas[i-1]>mas[i]){

tmp=mas[i];mas[i]=mas[i-1];mas[i-1]=tmp;

}

cout<<"Masuv vidsortovanuy "<

vuv(n);

getch();

return 0;}

2.4.2 Метод "камінця"




Похожие работы:

  1. Порівняльний аналіз ефективності та складності алгоритмів пошуку елементів у масивах

    Курсовая работа >> Информатика
    ... на тему: "Порівняльний аналіз ефективності та складності алгоритмів пошуку елементів ... Прямий пошук підрядка 2.2 Алгоритм Рабіна-Карпа 2.3 Алгоритм ... і елементів у певному масиві, множині або структур ... використаних операцій провести сортування масиву даних, а ...
  2. Порівняльний аналіз ефективності та складності алгоритмів сортування файлів і послідовностей

    Курсовая работа >> Информатика
    ... на тему: Порівняльний аналіз ефективності та складності алгоритмів сортування файлів і послідовностей Зміст Вступ 1. Сортування прямим злиттям 2. Природне ...
  3. Курс лекций по Логістика

    Реферат >> Логика
    ... прямий вплив здійснюють обсяг (маса), ... від тривалості та складності: сталі закуп ... порівняльний аналіз традиційної та логістичної концепції організації виробництва. Таблиця 5.1 Порівняльний анал ... більш ефективними способами; - висока ефективність забезпечення ...
  4. Контролінг на підприємстві

    Конспект >> Менеджмент
    ... прямі. До прямих витрат належать прямі матеріальні витрати, прямі витрати на оплату праці та ... сортування ... порівняльний аналіз. Порівняльний аналіз використовують для визначення розмірів і причин відмінностей у використанні ресурсів і ефективност ... складності ...
  5. Інформаційні системи в економіці

    Учебное пособие >> Экономика
    ... Сортування; ... та анал ... аналітичних систем прогнозування по ступені складност ... масивів або їхні назви і головне призначення; найважливіші алгоритми ... або прямими вимогами ... порівняльної важливості задоволення одних потреб і ігнорування інших, порівняльної ефективност ...

Хочу больше похожих работ...