Сортування гнома
| Клас | Алгоритм сортування |
|---|---|
| Структура даних | Масив |
| Найгірша швидкодія | ![]() |
| Найкраща швидкодія | ![]() |
| Середня швидкодія | ![]() |
Сортування гнома (англ. Gnome sort) — один із найпростіших алгоритмів сортування (на думку багатьох — найпростіший). Ім'я походить від голандського садового гнома, якого ставлять між квітковими рядками.
Зміст |
Аналіз [ред.]
Швидкодія [ред.]
Алгоритм концептуально простий, і не потребує навіть вкладених циклів. Його швидкодія рівна
, однак, на практиці, може працювати й швидше у режимі сортування вставками.
Приклад використання крок за кроком [ред.]
Відсортуємо масив числових елементів [4] [2] [7] [3] від найбільшого до найменшого:
[4] [2] [7] [3] (ініціалізація. i = 1, а j = 2.)
[4] [2] [7] [3] (нічого не робити, однак, тепер i = 2, а j = 3.)
[4] [7] [2] [3] (міняємо місцями a[2] та a[1]. однак, тепер i = 1, а j й досі = 3.)
[7] [4] [2] [3] (міняємо місцями a[1] and a[0]. однак, тепер i = 1, а j й досі = 3.)
[7] [4] [2] [3] (нічого не робити, однак, тепер i = 3, а j = 4.)
[7] [4] [3] [2] (міняємо місцями a[3] and a[2]. однак, тепер i = 2, а j = 4.)
[7] [4] [3] [2] (нічого не робити, однак, тепер i = 4, а j = 5.)
на цьому місці цикл завершується, оскільки i не < 4.
Реалізація [ред.]
Алгоритм можна записати в псевдокоді:
function gnomeSort(a[0..size-1]) {
i := 1
j := 2
while i < size
if a[i-1] <= a[i] # для сортування в спадаючому порядку замінити на ≥
i := j
j := j + 1
else
переставити a[i-1] та a[i]
i := i - 1
if i = 0
i := 1
}
Посилання [ред.]
- Gnome sort
- RosettaCode.org: Реалізація алгоритму різними мовами програмування
|
||||||||||||||||||||||||||||

