Π‘ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠ±ΠΎΡΠΎΠΌ
ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠ΅Π΄ΠΈ Π½Π΅ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΈ ΡΡΠ°Π²ΠΈΠΌ Π΅Π³ΠΎ Π½Π° ΡΠ²ΠΎΡ ΠΌΠ΅ΡΡΠΎ.
ΠΠ΄Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
- ΠΡΠ΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΠΎ Π²ΡΡΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅, ΡΡΠ°Π²ΠΈΠΌ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ
- ΠΡΠ΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ΅Π΄ΠΈ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ, ΡΡΠ°Π²ΠΈΠΌ Π½Π° Π²ΡΠΎΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ
- ΠΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ, ΠΏΠΎΠΊΠ° ΠΌΠ°ΡΡΠΈΠ² Π½Π΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½
Π Π°Π·Π±ΠΎΡ
ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΡΠΈΠΊΠ»
Π½Ρ Π΄Π»Ρ i ΠΎΡ 0 Π΄ΠΎ n - 2
min_i := i
...
ΠΊΡ
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ i β ΠΏΠΎΠ·ΠΈΡΠΈΡ, ΠΊΡΠ΄Π° ΠΌΡ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ. ΠΠ°ΡΠΈΠ½Π°Π΅ΠΌ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ i.
ΠΠΎΠΈΡΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ°
Π½Ρ Π΄Π»Ρ j ΠΎΡ i + 1 Π΄ΠΎ n - 1
Π΅ΡΠ»ΠΈ A[j] < A[min_i] ΡΠΎ
min_i := j
Π²ΡΠ΅
ΠΊΡ
ΠΡΠΎΡ
ΠΎΠ΄ΠΈΠΌ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠ°Π²Π΅Π΅ i. ΠΡΠ»ΠΈ Π½Π°ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° β Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ Π΅Π³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ Π² min_i.
ΠΠ±ΠΌΠ΅Π½
Π΅ΡΠ»ΠΈ min_i <> i ΡΠΎ
tmp := A[i]
A[i] := A[min_i]
A[min_i] := tmp
Π²ΡΠ΅
ΠΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π½Π΅ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΠΈ i β ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΈΡ
ΠΌΠ΅ΡΡΠ°ΠΌΠΈ.
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ: $O(n^2)$. ΠΠ΅Π»Π°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠ² (Π½Π΅ Π±ΠΎΠ»Π΅Π΅ $n - 1$), Π½ΠΎ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ $O(n^2)$ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ.
ΠΠΎΠ»Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
Π°Π»Π³ main(ΡΠ΅Π» n)
Π½Π°Ρ
Π΅ΡΠ»ΠΈ n <= 0 ΡΠΎ
Π²ΡΠ²ΠΎΠ΄ "Π Π°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ", Π½Ρ
Π²ΡΡ
ΠΎΠ΄
Π²ΡΠ΅
ΡΠ΅Π» ΡΠ°Π± A[0:n-1]
Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ_ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ(n, A)
Π²ΡΠ²ΠΎΠ΄ "ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²:", Π½Ρ
ΠΏΠ΅ΡΠ°ΡΡ_ΠΌΠ°ΡΡΠΈΠ²Π°(n, A)
selectionsort(n, A)
Π²ΡΠ²ΠΎΠ΄ "ΠΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ²:", Π½Ρ
ΠΏΠ΅ΡΠ°ΡΡ_ΠΌΠ°ΡΡΠΈΠ²Π°(n, A)
ΠΊΠΎΠ½
Π°Π»Π³ selectionsort(ΡΠ΅Π» n, ΡΠ΅Π» ΡΠ°Π± A[0:n-1])
Π½Π°Ρ
ΡΠ΅Π» i, j, min_i, tmp
Π½Ρ Π΄Π»Ρ i ΠΎΡ 0 Π΄ΠΎ n - 2
min_i := i
Π½Ρ Π΄Π»Ρ j ΠΎΡ i + 1 Π΄ΠΎ n - 1
Π΅ΡΠ»ΠΈ A[j] < A[min_i] ΡΠΎ
min_i := j
Π²ΡΠ΅
ΠΊΡ
Π΅ΡΠ»ΠΈ min_i <> i ΡΠΎ
tmp := A[i]
A[i] := A[min_i]
A[min_i] := tmp
Π²ΡΠ΅
ΠΊΡ
ΠΊΠΎΠ½
Π°Π»Π³ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ_ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ(ΡΠ΅Π» n, ΡΠ΅Π» ΡΠ°Π± A[0:n-1])
Π½Π°Ρ
ΡΠ΅Π» i
Π½Ρ Π΄Π»Ρ i ΠΎΡ 0 Π΄ΠΎ n - 1
A[i] := irnd(100)
ΠΊΡ
ΠΊΠΎΠ½
Π°Π»Π³ ΠΏΠ΅ΡΠ°ΡΡ_ΠΌΠ°ΡΡΠΈΠ²Π°(ΡΠ΅Π» n, ΡΠ΅Π» ΡΠ°Π± A[0:n-1])
Π½Π°Ρ
ΡΠ΅Π» i
Π½Ρ Π΄Π»Ρ i ΠΎΡ 0 Π΄ΠΎ n - 1
Π²ΡΠ²ΠΎΠ΄ A[i], " "
ΠΊΡ
Π²ΡΠ²ΠΎΠ΄ Π½Ρ
ΠΊΠΎΠ½