ΠΠ½ΠΎΠΌΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° (Π°Π½Π³Π». Gnome sort) — Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ, ΠΏΠΎΡ
ΠΎΠΆΠΈΠΉ Π½Π° ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ, Π½ΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΡΠ°Π²ΠΊΠΎΠΉ Π½Π° Π½ΡΠΆΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠΈΡ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠ², ΠΊΠ°ΠΊ Π² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΠΏΡΠ·ΡΡΡΠΊΠΎΠΌ. ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°Π΄ΠΎΠ²ΡΡ
Π³Π½ΠΎΠΌΠΎΠ² ΠΏΡΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ Π»ΠΈΠ½ΠΈΠΈ ΡΠ°Π΄ΠΎΠ²ΡΡ
Π³ΠΎΡΡΠΊΠΎΠ².
ΠΠ½ΠΎΠΌΡΡ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ΅Ρ
Π½ΠΈΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΎΠ±ΡΡΠ½ΡΠΌ Π³ΠΎΠ»Π»Π°Π½Π΄ΡΠΊΠΈΠΌ ΡΠ°Π΄ΠΎΠ²ΡΠΌ Π³Π½ΠΎΠΌΠΎΠΌ (Π½ΠΈΠ΄Π΅ΡΠ». tuinkabouter). ΠΡΠΎ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°Π΄ΠΎΠ²ΡΠΉ Π³Π½ΠΎΠΌ ΡΠΎΡΡΠΈΡΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ ΡΠ²Π΅ΡΠΎΡΠ½ΡΡ
Π³ΠΎΡΡΠΊΠΎΠ². ΠΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ ΠΎΠ½ ΡΠΌΠΎΡΡΠΈΡ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ°Π΄ΠΎΠ²ΡΠ΅ Π³ΠΎΡΡΠΊΠΈ: Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΎΠ½ ΡΠ°Π³Π°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ Π³ΠΎΡΡΠΎΠΊ Π²ΠΏΠ΅ΡΡΠ΄, ΠΈΠ½Π°ΡΠ΅ ΠΎΠ½ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡ
ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ ΡΠ°Π³Π°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ Π³ΠΎΡΡΠΎΠΊ Π½Π°Π·Π°Π΄. ΠΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ: Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π³ΠΎΡΡΠΊΠ°, ΠΎΠ½ ΡΠ°Π³Π°Π΅Ρ Π²ΠΏΠ΅ΡΡΠ΄; Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π³ΠΎΡΡΠΊΠ°, ΠΎΠ½ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ».
ΠΠΈΠΊ ΠΡΡΠ½ ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠΉ, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΡΠΈΠΊΠ»ΠΎΠ². ΠΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ {displaystyle Oleft (n^{2} ight)}. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π±ΡΡΡΡΠΎ, ΠΊΠ°ΠΊ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, Π³Π΄Π΅ Π΄Π²Π° ΡΠΎΡΠ΅Π΄Π½ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠΎΡΡ Π² Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡ
ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΠ½ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅ΠΌ ΡΠ°ΠΊΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ±ΠΌΠ΅Π½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠ΄ΠΈΡΡ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΡΡ, ΡΡΠΎΡΡΡΡ Π² Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ½ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π΄ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΈΠΌΠ΅Ρ: ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ [4] [2] [7] [3] ΠΎΡ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΊ ΠΌΠ΅Π½ΡΡΠ΅ΠΌΡ, ΡΠΎ Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΡΡ
ΡΠΈΠΊΠ»Π° while Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- Β· [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] ΠΈ a[0], ΡΠ΅ΠΉΡΠ°Ρ i == 3, j == 4);
- Β· [7] [4] [3] [2] (ΠΎΠ±ΠΌΠ΅Π½ a[3] ΠΈ a[2], ΡΠ΅ΠΉΡΠ°Ρ i == 2, j == 4);
- Β· [7] [4] [3] [2] (Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ i == 4, j == 5);
- Β· ΡΠΈΠΊΠ» Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ, Ρ. ΠΊ. i Π½Π΅ < 4.