Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Model C++.pdf
Скачиваний:
123
Добавлен:
17.02.2016
Размер:
671.98 Кб
Скачать

return;

}

//Реалізація шаблону функції сортування масиву методом прямого вибору //опис алгоритму дивись вище

template <class T> void vibir(T* massive,int size)

{

T tmp; int i,j,e;

tmp=massive[0];

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

{

e=i;

tmp=massive[i];

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

{

if(massive[j]<tmp)

{

tmp=massive[j];

e=j;

}

}

if(e!=i)

{

massive[e]=massive[i];

massive[i]=tmp;

}

}

return;

}

Сортування за допомогою обміну

Сортування за допомогою обміну базується на процесі порівняння і при необхідності обміну місцями двох сусідніх елементів масиву. Ці операції повторюються доти, доки не буде упорядковано весь масив. Треба зазначити, що після першого проходу по всьому масиву максимальний елемент переміщається в крайнє праве положення, і на наступному етапі немає сенсу перевіряти весь масив. Тому на практиці при першому проході перевіряють елементи з номерами від 1 до n (останнього), на другому від 1 до (n-1) і т.д.

38

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

Приклад:

#include <iostream.h> #include <stdlib.h> #include <conio.h>

//Шаблон функції сортування елементів масиву методом обміну template <class T> void obm_sort(T* massive,int size);

void main()

{

//Оголошення змінних необхідних для реалізації алгоритму int* mas;

int n,i;

//Очищення екрану clrscr();

//Запит на введення розміру масиву cout << "Input n" << endl;

cout << "n="; cin >> n;

cout << "creating massive of random numbers:"<<endl; //Динамічне виділення пам’яті під елементи масиву mas=new int[n];

//Підключення генератору випадкових чисел randomize();

//Формування масиву випадкових чисел for (i=0;i<n;i++)

{

//Формування елементу масиву випадковим чином mas[i]=random(100)-50;

//Відображення на екрані сформованого елементу cout << mas[i]<<" ";

}

//Переведення курсору на наступну строку екрану cout << endl;

//Сортування елементів масиву методом обміну obm_sort(mas,n);

//Відображення на екрані відсортованого масиву cout << "massiv after sorting:" << endl; for(i=0;i<n;i++)

{

39

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]