Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по QBasic.doc
Скачиваний:
4
Добавлен:
29.04.2019
Размер:
5.12 Mб
Скачать

Інші методи сортування

Обмінне сортування має свої переваги та недоліки. Його недоліком є невисока швидкість. Розглянемо декілька інших методів сортування.

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

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

  • Сортування методом перестановки за індексами

У масиві, що складається з N елементів, послідовним порівнянням у процесі пошуку знаходиться найменший (найбільший) елемент і запам’ятовується його індекс (К). Після перегляду всього масиву обмінюються місцями перший та К-й елементи. Процедура повторюється, починаючи з другого, третього, четвертого,…, (N-1)-го елементу.

  • Сортування підрахунком

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

Розв’яжемо приклад 2, але вже методом перестановки за індексами:

REM Перестановка за індексами

INPUT N: DIM A(N)

FOR I=1 TO N: INPUT A(I): NEXT I

FOR I=1 TO N: PRINT A(I): NEXT I

FOR J=1 TO N-1

MIN=A(J)

FOR I=J TO N

IF A(I)<MIN THEN MIN=A(I): K=I

NEXT I

SWAP A(J), A(K)

NEXT J

FOR I=1 TO N: PRINT A(I): NEXT I

END

Приклад 3. Задано масив U(N) та натуральне число К. Упорядкувати елементи, починаючи з елементу з номером К, за зростанням. Для розв’язання цієї задачі застосуємо комбінований метод.

REM Сортування комбінованим методом

20 INPUT N,K

IF 1<=N AND N<K THEN GOTO 40 ELSE GOTO 20

40 DIM U(N)

FOR I=1 TO N: INPUT U(I): NEXT I

FOR I=K TO N-1

FOR J=I+1 TO N

IF U(I)>U(J) THEN SWAP U(I),U(J)

NEXT J,I

FOR I=1 TO N

PRINT U(I)

NEXT I

END

Практика показала, що розв’язання задачі на сортування елементів масиву доцільно подавати у вигляді таких етапів:

  • ввести вхідний масив;

  • надрукувати вхідний (не впорядкований масив);

  • визначити номери початкового та кінцевого елементів тієї частини масиву, яка підлягає сортуванню;

  • здійснити сортування;

  • вивести впорядкований масив.

Приклад 4. Задано масив A(M), де M – парне число. Упорядкувати першу половину його в порядку зростання, а другу – у порядку спадання значень елементів.

REM Лабораторна робота №9, задача №1

CLS

REM Сортування одновимірного масиву

INPUT "Введіть розмірність масиву"; M

DIM A(M)

FOR I = 1 TO M:

INPUT "Введіть елементи масиву"; A(I)

NEXT I

CLS

PRINT "Вхідний масив"

FOR I = 1 TO M: PRINT A(I): NEXT I

Сортування першої половини масиву в порядку зростання

K = M / 2 : L = K + 1

FOR P = 1 TO K - 1

FOR I = 1 TO K - 1

IF A(I) > A(I + 1) THEN SWAP A(I), A(I + 1)

NEXT I, P

' Сортування другої половини масиву в порядку спадання

FOR P = L TO M - 1

FOR I = L TO M - 1

IF A(I) < A(I + 1) THEN SWAP A(I), A(I + 1)

NEXT I, P

PRINT

PRINT "Впорядкований масив"

FOR I = 1 TO M: PRINT A(I): NEXT I

END

Приклад 5. Задано масив A(M). Упорядкувати N останніх елементів у порядку спадання їх значень (відомо, що N<M).

CLS

REM Лабораторна робота №9, задача №2

INPUT " Введіть розмірність масиву "; M

INPUT "Введіть кількість елементів, які необхідно впорядкувати"; N

PRINT “Введіть елементи масиву”

FOR I = 1 TO M: INPUT A(I);: NEXT I

CLS

PRINT " Вхідний масив "

FOR I = 1 TO M: PRINT A(I);: NEXT I

' Сортування N останніх елементів

R = M - N + 1

FOR P = R TO M - 1

FOR I = R TO M - 1

IF A(I) < A(I + 1) THEN SWAP A(I), A(I + 1)

NEXT I,P

PRINT

PRINT " Впорядкований масив "

FOR I = 1 TO M: PRINT A(I);: NEXT I

END