Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
21-60.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
270.43 Кб
Скачать

43)Загальні відомості про сортування. Сортування методом вставки.

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

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

Метод вставки

Метод грунтується на наступному: вважається, що перед розглядом запису r[j] попередні записи r[1],r[2],...,r[j-1] вже впорядковані, і r[j] вставляється у відповідне місце. Сортування таблиці починається з другого запису. Її ключ порівнюється з ключем першого запису, і, якщо впорядкованість порушена, то записи r[1] і r[2] переставляються. Потім ключ запису r[3] порівнюється з ключами записів r[2] і r[1]. На j - м кроці До[j] порівнюється по черзі сk[j-1],k[j-2]...(до[1]<=k[2]<=...<=k[j-1]) до тих пір, поки виконується умова до[j]=k[i] означає, що запис r[j] потрібно вставити між r[i] і r[i+1]. Тоді записи r[i+1], r[i+2],...,r[j-1] зрушуються на одну позицію, і запис r[j] поміщається в позицію i+1.

Операції порівняння і переміщення записів зручно суміщати, перемежаючи їх один з одним (цей спосіб називається "просіюванням").

Нижче показано виконання j-го кроку сортування ( з "просіюванням" ).

5 8 10 14 6 2 11 | j=5, i=4, 6 < 14

<-~~ |

5 8 10 6 14 2 11 | i=3, 6 < 10

<-~~ |

5 8 6 10 14 2 11 | i=2, 6 < 8

<-~~ |

5 6 8 10 14 2 11 | i=1, 6 > 5

Кількість операцій порівняння для методу вставки визначається по формулі

n * (n - 1)

з = ------------

4

При достатньо великому числі елементів в сортованій таблиці можна прийняти з = n**2/4 . Максимальна кількість перестановок при використанні цього методу приблизно рівна n**2/4

Метод вставки зазвичай використовується тоді, коли записи вносяться до впорядкованої таблиці. Новий запис повинен бути вставлена в таблицю так, щоб існуюча впорядкованість не порушувалася.

44)Константа. Типізована константа. Змінна. Вирази

Константами - називаються величини, значення яких не змінюються в процесі виконання програми. Для визначення констант використовують зарезервоване слово const.Формат: const<ідентифікатор>=<знач.константи>;Приклад: const max = 1000; min = 1;

Типізовані константи — це змінні, яким надано значення на початку виконання програми. Такі константи називаються змінними, що ініціалізуються, або змінними з початковим значенням. Синтаксис оголошення типізованої константи:

const <ідентифікатор>:<тип> = <вираз>;

Тут значення вказаного справа від знака «=» виразу повинне мати той самий тип, що й ідентифікатор константи.

Змінними -називаються величини, значення яких змінюється в процесі виконання програми. Для опису змінних використовують службове слово var.Формат: var<ідентифікатор>:<тип>;Приклад: var sum1,sum2:real;

Вираз може складатися з констант, змінних, знаків операцій, круглих дужок та функцій.

Нижче наведені знаки операцій у порядку зниження старшинства їх виконання:

@, Not

*, /, Div, Mod, And, Shl, Shr

+, -, Or, Xor

=, <>, <, >, <=, >=, In

Операція @ вживається частіше за все під час роботи з динамічною пам’яттю. Під час роботи з логічними даними виникає потреба брати протилежне (негативне) значення логічної величини. Для цього застосовують операцію Not.

Знак * визначає операцію множення, а / - операцію ділення. Операції Div та Mod мають справу тільки з цілими операндами. Операція Div обчислює цілу частину частки, а Mod – залишок.

Типове використання операцій And - при роботі з логічними даними. Результат операції буде True тільки в тому випадку, коли обидва операнди мають таке ж значення.

Операндами операції Shl та Shr можуть бути цілі числа. Ці операції забезпечують циклічні зсуви відповідно ліворуч та праворуч двійкових розрядів чисел.

Операція Or реалізує логічну функцію диз’юнкції, її результат True, якщо принаймні один з операндів буде True.

Результатом операції Xor буде True, якщо значення операндів не збігаються, в протилежному випадку - False.

Операндами операції In являються: з одного боку, множина деяких елементів, а з другого, дані, які можуть входити в множину, або ні.

 Математичний вираз

 Мова Паскаль Функція

 Пояснення

 Тип аргументу

 Тип результату

y = | x | 

y := abs(x)

Абсолютне значення "x"  або модуль "х"

 integer, real

 integer, real

y =  sin x

y :=  sin(x)

Синус "x" рад

 integer, real   

real  

y =   cos x 

y :=  cos(x)

Косинус "x" рад

 integer, real  

real  

y =   arctg x 

y :=  arctan(x)

арктангенс "х" ( -Pi/2 < y < td )< 2 Pi>

 integer, real  

real  

 Квадратний корінь з Х

y :=  Sqrt(x)

квадратний корінь из "х"( x > 0)

 integer, real  

real  

  y =  х2

y :=  Sqr(x)

значення "х" в квадраті ( х2 )

 integer, real  

integer, real 

y =   ех 

y :=  Exp(x)

значення "е" в степені "х" ( ех, де e= 2. 718282. . . )

 integer, real  

real  

y =    Ln x

y :=  Ln(x)

натуральний логарифм "х" ( х > 0 )

 integer, real  

real  

Дробова частина Х

y :=  Frac(x)

дробова частина "х"

real 

real  

Ціла частина Х 

y :=  Int(x)

ціла частина "х"

real 

real  

Випадкове число   

t :=  Random(x)  

випадкове число 0 < =y < x )  

 integer

 integer

Округлити Х

t := Round (x) 

Округлює Х до цілого 

real 

integer 

Відкинути дробову  частину Х 

t := Trunc(x) 

 Відкидає дробову частину від числа Х

 real

integer 

Перевірка на парність  

f := odd(x)

integer 

boolean true непарне false парне

 Xn

 Y := exp(ln(x)*n) 

Х в степені n

 

 

 ASCII код символу  

Ord(s)  

Код символу в  ASCII  

char 

byte 

Символ по ASCII коду 

 Chr(s)

 Повертає символ по його коду

 byte

 Char

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