![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
При сортуванні цим методом фіксується перший лівий елемент масиву й проглядається права частина масиву (N-1) елементів. Шукається найменший елемент праворуч. Якщо знайдений елемент менше першого, він переставляється з першим елементом. Далі фіксується другий елемент масиву й проглядаються (N-2) елементів праворуч. Розшукується найменший елемент і переставляється з елементом 2. Подібна процедура триває доти, поки не залишиться найбільший елемент.
Наведемо приклад функції selectSort, що здійснює сортування масиву методом прямого вибору: У списку аргументів є: покажчик на масив *a; розмір масиву num; посилання на змінну &mov, що враховує число пересилань..
void selectSort(int *a, int num, int &mov){
for (int i=0; i<num-1; i++){ //Задати лівий ел-т
int min = i; //Змінна для індексу мінімального ел-та
for (int j=i+1; j<num; j++) //Задати правий ел-т
if (a[j]<a[min]) min=j; //Порівняти із мінімальним
if (min!=i){ //Якщо знайдено ел-т, що менше лівого
swap(a[min],a[i]); //Переставити лівий і мінімальний
mov+=3;
display(a, num); //Вивести на екран перестановку };
}
}
Приклад сортування масиву методом вибору (білим кольором показані елементи, які не змінюються при ітерації, сірим кольором – елементи, що міняються місцями):
Вихідний масив | |||||
1-я ітерація | |||||
2-я ітерація | |||||
3-я ітерація | |||||
4-я ітерація |
Дата публикования: 2015-04-07; Прочитано: 658 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!