ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки. 
ОбмСнная сортировка. 
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ сортировки

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° допускаСт Ρ‚Ρ€ΠΈ простых ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π° 3, Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… послСдних ΡˆΠ°Π³Π°Ρ… располоТСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов Π½Π΅ ΠΌΠ΅Π½ΡΠ»ΠΎΡΡŒ, (массив оказался ΡƒΠΆΠ΅ упорядочСнным). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ шагС Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π°, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ наимСньшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса массива, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки. ОбмСнная сортировка. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ сортировки (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠ˜ΠΠ˜Π‘Π’Π•Π Π‘Π’Π’Πž ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠΠ˜Π― Π ΠžΠ‘Π‘Π˜Π™Π‘ΠšΠžΠ™ Π€Π•Π”Π•Π ΠΠ¦Π˜Π˜ ΠšΠ£Π Π‘ΠžΠ’ΠΠ― Π ΠΠ‘ΠžΠ’Π ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΠ»Π³ΠΎΡ€ΠΈΡ‚мичСскоС обСспСчСниС Π­Π’Π‘».

Π½Π° Ρ‚Π΅ΠΌΡƒ «ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки. ОбмСнная сортировка.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ сортировки".

2010 Π³.

1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ.

2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π¨Π΅Π»Π»Π°.

3. ОбмСнная сортировка.

4. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

5. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ.

6. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°.

ЦСлью Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся изучСния основных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки массивов Π΄Π°Π½Π½Ρ‹Ρ…, сравнСниС слоТности ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрСн ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΠΌΠ΅Π½Π½ΠΎΠΉ сортировки.

Если ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π΄Π²Π° ΠΊΡ€Π°ΠΉΠ½ΠΈΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°. НСкоторыС Π°Π²Ρ‚ΠΎΡ€Ρ‹ Π»ΡŽΠ±ΡΡ‚ ΠΈΠ·Π»Π°Π³Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π° Π²Ρ‹ΡΠΎΠΊΠΎΠΌ тСорСтичСском ΡƒΡ€ΠΎΠ²Π½Π΅. НапримСр, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ввСсти понятиС Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Π²ΠΈΡ‚Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ абстрактной Π°Π»Π³Π΅Π±Ρ€Ρ‹; ΠΏΡ€ΠΈ описании Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ порядкС приводятся асимптотичСскиС ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΈΡ… ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ состоит Π² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ выбираСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ язык программирования, ΠΈ Π²ΡΠ΅ описываСмыС структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° ΡΡ‚ΠΎΠΌ языкС.

1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ.

Одним ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ простых ΠΈ Π΅ΡΡ‚СствСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сортировки являСтся сортировка с ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. ИдСя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ‡Π΅Π½ΡŒ проста. ΠŸΡƒΡΡ‚ΡŒ имССтся массив ΠΊΠ»ΡŽΡ‡Π΅ΠΉ a[1], a[2], …, a[n]. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива, начиная со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ, производится сравнСниС с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ с ΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ индСксом (элСмСнт a[i] ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сравниваСтся с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ a[i-1], a[i-2] …) ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° для ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ элСмСнта a[j] выполняСтся ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ a[j] > a[i], a[i] ΠΈ a[j] ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами. Если удаСтся Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ элСмСнт a[j], Ρ‡Ρ‚ΠΎ a[j] <= a[i], ΠΈΠ»ΠΈ Ссли достигнута ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° массива, производится ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ элСмСнта a[i+1] (ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнута вСрхняя Π³Ρ€Π°Π½ΠΈΡ†Π° массива).

Π›Π΅Π³ΠΊΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС (ΠΊΠΎΠ³Π΄Π° массив ΡƒΠΆΠ΅ упорядочСн) для выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΈΠ· n ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² потрСбуСтся n-1 сравнСниС ΠΈ 0 пСрСсылок. Π’ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС (ΠΊΠΎΠ³Π΄Π° массив упорядочСн Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС) потрСбуСтся n?(n-1)/2 сравнСний ΠΈ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅ пСрСсылок. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° простых Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ O (n2).

МоТно ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ число сравнСний, примСняСмых Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ простых Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, Ссли Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π΅ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ элСмСнта a[i] массива элСмСнты a[1], a[2], …, a[i-1] ΡƒΠΆΠ΅ упорядочСны, ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для поиска элСмСнта, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° пСрСстановка, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ дСлСния. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΎΡ†Π΅Π½ΠΊΠ° числа Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… сравнСний становится O (n?log n). Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ пСрСстановки трСбуСтся сдвиТка Π½Π° ΠΎΠ΄ΠΈΠ½ элСмСнт Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов, Ρ‚ΠΎ ΠΎΡ†Π΅Π½ΠΊΠ° числа пСрСсылок остаСтся O (n2).

Π’Π°Π±Π»ΠΈΡ†Π° 1.1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ простого Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС массива.

8 23 5 65 44 33 1 6.

Π¨Π°Π³ 1.

8 23 5 65 44 33 1 6.

Π¨Π°Π³ 2.

8 5 23 65 44 33 1 6.

5 8 23 65 44 33 1 6.

Π¨Π°Π³ 3.

5 8 23 65 44 33 1 6.

Π¨Π°Π³ 4.

5 8 23 44 65 33 1 6.

Π¨Π°Π³ 5.

5 8 23 44 33 65 1 6.

5 8 23 33 44 65 1 6.

Π¨Π°Π³ 6.

5 8 23 33 44 1 65 6.

5 8 23 33 1 44 65 6.

5 8 23 1 33 44 65 6.

5 8 1 23 33 44 65 6.

5 1 8 23 33 44 65 6.

1 5 8 23 33 44 65 6.

Π¨Π°Π³ 7.

1 5 8 23 33 44 6 65.

1 5 8 23 33 6 44 65.

1 5 8 23 6 33 44 65.

1 5 8 6 23 33 44 65.

1 5 6 8 23 33 44 65.

2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π¨Π΅Π»Π»Π°.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠΌ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сортировки с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ являСтся сортировка ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π¨Π΅Π»Π»Π°, называСмая ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ сортировкой Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ с ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°ΡŽΡ‰ΠΈΠΌΡΡ расстояниСм. ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅, Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌΡΡ случаСм, ΠΊΠΎΠ³Π΄Π° число элСмСнтов Π² ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ массивС являСтся ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ числа 2. Для массива с 2n элСмСнтами Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. На ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„Π°Π·Π΅ производится сортировка Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ всСх ΠΏΠ°Ρ€ элСмСнтов массива, расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΅ΡΡ‚ΡŒ 2(n-1). На Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°Π·Π΅ производится сортировка Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ массива, расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΅ΡΡ‚ΡŒ 2(n-2). И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅ΠΌ Π΄ΠΎ Ρ„Π°Π·Ρ‹ с Ρ€Π°ΡΡΡ‚ояниСм ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами, Ρ€Π°Π²Π½Ρ‹ΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅, ΠΈ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΡƒΡŽ сортировку с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π¨Π΅Π»Π»Π° ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌΡƒ Π² Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.2.

Π’Π°Π±Π»ΠΈΡ†Π°1.2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π¨Π΅Π»Π».

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС массива.

8 23 5 65 44 33 1 6.

Π€Π°Π·Π° 1 (ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ элСмСнты, расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅).

8 23 5 65 44 33 1 6.

8 23 5 65 44 33 1 6.

8 23 1 65 44 33 5 6.

8 23 1 6 44 33 5 65.

Π€Π°Π·Π° 2 (ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ элСмСнты, расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Π²Π°).

1 23 8 6 44 33 5 65.

1 23 8 6 44 33 5 65.

1 23 8 6 5 33 44 65.

1 23 5 6 8 33 44 65.

1 6 5 23 8 33 44 65.

1 6 5 23 8 33 44 65.

1 6 5 23 8 33 44 65.

Π€Π°Π·Π° 3 (ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ элСмСнты, расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ΄ΠΈΠ½).

1 6 5 23 8 33 44 65.

1 5 6 23 8 33 44 65.

1 5 6 23 8 33 44 65.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π¨Π΅Π»Π»Π° СстСствСнно пСрСформулируСтся для Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ· t Ρ€Π°ΡΡΡ‚ояний ΠΌΠ΅ΠΆΠ΄Ρƒ элСмСнтами h1, h2, …, ht, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ условия h1 = 1 ΠΈ h (i+1) < hi. Π”ΠΎΠ½Π°Π»ΡŒΠ΄ ΠšΠ½ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Ρ… t ΠΈ h ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π¨Π΅Π»Π»Π° являСтся O (n (1.2)), Ρ‡Ρ‚ΠΎ сущСствСнно мСньшС слоТности простых Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки.

3. ОбмСнная сортировка.

ΠŸΡ€ΠΎΡΡ‚Π°Ρ обмСнная сортировка (Π² ΠΏΡ€ΠΎΡΡ‚ΠΎΡ€Π΅Ρ‡ΠΈΠΈ называСмая «ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°») для массива a[1], a[2], …, a[n] Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Начиная с ΠΊΠΎΠ½Ρ†Π° массива ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° сосСдних элСмСнта (a[n] ΠΈ a[n-1]). Если выполняСтся условиС a[n-1] > a[n], Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ элСмСнтов ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами. ΠŸΡ€ΠΎΡ†Π΅ΡΡ продолТаСтся для a[n-1] ΠΈ a[n-2] ΠΈ Ρ‚. Π΄., ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ сравнСниС a[2] ΠΈ a[1]. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ послС этого Π½Π° ΠΌΠ΅ΡΡ‚Π΅ a[1] окаТСтся элСмСнт массива с Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. На Π²Ρ‚ΠΎΡ€ΠΎΠΌ шагС процСсс повторяСтся, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ a[3] ΠΈ a[2]. И Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. На ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ шагС Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ значСния a[n] ΠΈ a[n-1]. ΠŸΠΎΠ½ΡΡ‚Π½Π° аналогия с ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ наимСньшиС элСмСнты (самыС «Π»Π΅Π³ΠΊΠΈΠ΅») постСпСнно «Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚» ΠΊ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ массива. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.3.

Π’Π°Π±Π»ΠΈΡ†Π° 1.3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠŸΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС массива.

8 23 5 65 44 33 1 6.

Π¨Π°Π³ 1.

8 23 5 65 44 33 1 6.

8 23 5 65 44 1 33 6.

8 23 5 65 1 44 33 6.

8 23 5 1 65 44 33 6.

8 23 1 5 65 44 33 6.

8 1 23 5 65 44 33 6.

1 8 23 5 65 44 33 6.

Π¨Π°Π³ 2.

1 8 23 5 65 44 6 33.

1 8 23 5 65 6 44 33.

1 8 23 5 6 65 44 33.

1 8 23 5 6 65 44 33.

1 8 5 23 6 65 44 33.

1 5 8 23 6 65 44 33.

Π¨Π°Π³ 3.

1 5 8 23 6 65 33 44.

1 5 8 23 6 33 65 44.

1 5 8 23 6 33 65 44.

1 5 8 6 23 33 65 44.

1 5 6 8 23 33 65 44.

Π¨Π°Π³ 4.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

Π¨Π°Π³ 5.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

Π¨Π°Π³ 6.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

Π¨Π°Π³ 7.

1 5 6 8 23 33 44 65.

Для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° простой ΠΎΠ±ΠΌΠ΅Π½Π½ΠΎΠΉ сортировки трСбуСтся число сравнСний nx(n-1)/2, минимальноС число пСрСсылок 0, Π° ΡΡ€Π΅Π΄Π½Π΅Π΅ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ число пСрСсылок — O (n2).

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° допускаСт Ρ‚Ρ€ΠΈ простых ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π° 3, Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… послСдних ΡˆΠ°Π³Π°Ρ… располоТСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов Π½Π΅ ΠΌΠ΅Π½ΡΠ»ΠΎΡΡŒ, (массив оказался ΡƒΠΆΠ΅ упорядочСнным). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ шагС Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΠΌΠ΅Π½Π°, Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ наимСньшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса массива, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ шагС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ пСрСстановки. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ вСрхняя Ρ‡Π°ΡΡ‚ΡŒ массива Π΄ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π° с ΡΡ‚ΠΈΠΌ индСксом ΡƒΠΆΠ΅ отсортирована, ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ сравнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ сосСдних элСмСнтов ΠΏΡ€ΠΈ достиТСнии Ρ‚Π°ΠΊΠΎΠ³ΠΎ значСния индСкса. Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½ΠΎ для «Π»Π΅Π³ΠΊΠΈΡ…» ΠΈ «Ρ‚яТСлых» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π›Π΅Π³ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π½Π° Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто Π·Π° ΠΎΠ΄ΠΈΠ½ шаг, Π° Ρ‚яТСлоС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС опускаСтся ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ мСсту Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ.

На ΡΡ‚ΠΈΡ… Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΡΡ… основан ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡˆΠ΅ΠΉΠΊΠ΅Ρ€Π½ΠΎΠΉ сортировки (ShakerSort). ΠŸΡ€ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС мСняСтся Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ просмотра. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ шагС «Π²ΡΠΏΠ»Ρ‹Π²Π°Π΅Ρ‚» ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΉ элСмСнт, Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ «Ρ‚ΠΎΠ½Π΅Ρ‚» ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ самый тяТСлый. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡˆΠ΅ΠΉΠΊΠ΅Ρ€Π½ΠΎΠΉ сортировки ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.4.

Π’Π°Π±Π»ΠΈΡ†Π° 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡˆΠ΅ΠΉΠΊΠ΅Ρ€Π½ΠΎΠΉ сортировки.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС массива.

8 23 5 65 44 33 1 6.

Π¨Π°Π³ 1.

8 23 5 65 44 33 1 6.

8 23 5 65 44 1 33 6.

8 23 5 65 1 44 33 6.

8 23 5 1 65 44 33 6.

8 23 1 5 65 44 33 6.

8 1 23 5 65 44 33 6.

1 8 23 5 65 44 33 6.

Π¨Π°Π³ 2.

1 8 23 5 65 44 33 6.

1 8 5 23 65 44 33 6.

1 8 5 23 65 44 33 6.

1 8 5 23 44 65 33 6.

1 8 5 23 44 33 65 6.

1 8 5 23 44 33 6 65.

Π¨Π°Π³ 3.

1 8 5 23 44 6 33 65.

1 8 5 23 6 44 33 65.

1 8 5 6 23 44 33 65.

1 8 5 6 23 44 33 65.

1 5 8 6 23 44 33 65.

Π¨Π°Π³ 4.

1 5 6 8 23 44 33 65.

1 5 6 8 23 44 33 65.

1 5 6 8 23 44 33 65.

1 5 6 8 23 33 44 65.

Π¨Π°Π³ 5.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

1 5 6 8 23 33 44 65.

ШСйкСрная сортировка позволяСт ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ число сравнСний (ΠΏΠΎ ΠΎΡ†Π΅Π½ΠΊΠ΅ ΠšΠ½ΡƒΡ‚Π° срСдним числом сравнСний являСтся (n2 — n?(const + ln n)), хотя порядком ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ остаСтся n2. Число ΠΆΠ΅ пСрСсылок, Π²ΠΎΠΎΠ±Ρ‰Π΅ говоря, Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ‚ся. Π¨Π΅ΠΉΠΊΠ΅Ρ€Π½ΡƒΡŽ сортировку рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° извСстно, Ρ‡Ρ‚ΠΎ массив «ΠΏΠΎΡ‡Ρ‚ΠΈ упорядочСн» .

4. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

ΠŸΡ€ΠΈ сортировкС массива a[1], a[2], …, a[n] ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ простого Π²Ρ‹Π±ΠΎΡ€Π° срСди всСх элСмСнтов находится элСмСнт с Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ a[i], ΠΈ a[1] ΠΈ a[i] ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ значСниями. Π—Π°Ρ‚Π΅ΠΌ этот процСсс повторяСтся для ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… подмассивов a[2], a[3], …, a[n], … a[j], a[j+1], …, a[n] Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅ΠΌ Π΄ΠΎ ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π° a[n], содСрТащСго ΠΊ ΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ наибольшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.5.

Π’Π°Π±Π»ΠΈΡ†Π° 5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки простым Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС массива.

8 23 5 65 44 33 1 6.

Π¨Π°Π³ 1.

1 23 5 65 44 33 8 6.

Π¨Π°Π³ 2.

1 5 23 65 44 33 8 6.

Π¨Π°Π³ 3.

1 5 6 65 44 33 8 23.

Π¨Π°Π³ 4.

1 5 6 8 44 33 65 23.

Π¨Π°Π³ 5.

1 5 6 8 33 44 65 23.

Π¨Π°Π³ 6.

1 5 6 8 23 44 65 33.

Π¨Π°Π³ 7.

1 5 6 8 23 33 65 44.

Π¨Π°Π³ 8.

1 5 6 8 23 33 44 65.

Для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сортировки простым Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ число сравнСний — nx(n-1)/2. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ числа пСрСсылок (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для Π²Ρ‹Π±ΠΎΡ€Π° минимального элСмСнта) Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС составляСт O (n2). Однако порядок срСднСго числа пСрСсылок Π΅ΡΡ‚ΡŒ O (n?ln n), Ρ‡Ρ‚ΠΎ Π² Ρ€ΡΠ΄Π΅ случаСв Π΄Π΅Π»Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

5. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ (Quicksort).

ΠœΠ΅Ρ‚ΠΎΠ΄ сортировки Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π±Ρ‹Π» ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π§Π°Ρ€Π»ΡŒΠ·ΠΎΠΌ Π₯ΠΎΠ°Ρ€ΠΎΠΌ (ΠΎΠ½ Π»ΡŽΠ±ΠΈΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ сСбя Π’ΠΎΠ½ΠΈ) Π² 1962 Π³. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ являСтся Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° простого ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ эффСктивСн, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ стали Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ «ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ быстрой сортировки — Quicksort» .

Основная идСя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ выбираСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ элСмСнт массива x, послС Ρ‡Π΅Π³ΠΎ массив просматриваСтся слСва, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΡΡ‚рСтится элСмСнт a[i] Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ a[i] > x, Π° Π·Π°Ρ‚Π΅ΠΌ массив просматриваСтся справа, ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΡΡ‚рСтится элСмСнт a[j] Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ a[j] < x. Π­Ρ‚ΠΈ Π΄Π²Π° элСмСнта ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами, ΠΈ ΠΏΡ€ΠΎΡ†Π΅ΡΡ просмотра, сравнСния ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° продолТаСтся, ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅ΠΌ Π΄ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π° x. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ массив окаТСтся Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ΠΌ Π½Π° Π΄Π²Π΅ части — Π»Π΅Π²ΡƒΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ значСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ мСньшС x, ΠΈ ΠΏΡ€Π°Π²ΡƒΡŽ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΡΠΌΠΈ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, большими x. Π”Π°Π»Π΅Π΅ процСсс рСкурсивно продолТаСтся для Π»Π΅Π²ΠΎΠΉ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ частСй массива Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° каТдая Ρ‡Π°ΡΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² Ρ‚очности ΠΎΠ΄ΠΈΠ½ элСмСнт. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ итСрациями, Ссли Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ индСксы массива. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΠΌ этот процСсс Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ нашСго стандартного массива (Ρ‚Π°Π±Π»ΠΈΡ†Π° 2.6).

Π’Π°Π±Π»ΠΈΡ†Π° 6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ быстрой сортировки.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС массива.

8 23 5 65 |44| 33 1 6.

Π¨Π°Π³ 1 (Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ x Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся a[5]).

|————|.

8 23 5 6 44 33 1 65.

|—-|.

8 23 5 6 1 33 44 65.

Π¨Π°Π³ 2 (Π² ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π΅ a[1], a[5] Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ x Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся a[3]).

8 23 |5| 6 1 33 44 65.

|————|.

1 23 5 6 8 33 44 65.

|—|.

1 5 23 6 8 33 44 65.

Π¨Π°Π³ 3 (Π² ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π΅ a[3], a[5] Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ x Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся a[4]).

1 5 23 |6| 8 33 44 65.

|——|.

1 5 8 6 23 33 44 65.

Π¨Π°Π³ 4 (Π² ΠΏΠΎΠ΄ΠΌΠ°ΡΡΠΈΠ²Π΅ a[3], a[4] выбираСтся a[4]).

1 5 8 |6| 23 33 44 65.

|—|.

1 5 6 8 23 33 44 65.

Алгоритм Π½Π΅Π΄Π°Ρ€ΠΎΠΌ называСтся быстрой сортировкой, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Π½Π΅Π³ΠΎ ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ числа сравнСний ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠ² являСтся O (n?log n). На ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… сортировку массивов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

6. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

Для сравнСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² сортировки Π±Ρ‹Π»Π° написана ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сортировку ΠΏΡΡ‚ΡŒΡŽ способами, ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ. Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива производится случайными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Рис 1. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ПослС выполнСния сортировки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ количСство сравнСний ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΎΠΊ. ΠŸΡ€ΠΈ сравнСнии заполнялась Ρ‚Π°Π±Π»ΠΈΡ†Π° зависимости числа пСрСстановок ΠΈ Ρ‡ΠΈΡΠ»Π° сравнСний ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива.

Π’Π°Π±Π»ΠΈΡ†Π° 7.

ΠœΠ΅Ρ‚ΠΎΠ΄.

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΎΠΊ.

Кол-во.

ΠŸΡƒΠ·Ρ‹Ρ€Ρ‘ΠΊ.

QuickSort.

Π’Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

Π¨Π΅Π»Π»Π°.

Вставками.

На ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Ρ‹Π»ΠΈ построСны Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.

Рис 2. Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ числа пСрСстановок ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива Рис 3. Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ числа сравнСний ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹.

По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π·Π°ΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹:

1. НаиболСС ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ быстрой сортировки («QuickSort»), ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ высокиС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° Π»ΡŽΠ±Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… массивов. На Π²Ρ‚ΠΎΡ€ΠΎΠΌ мСстС находится ΠΌΠ΅Ρ‚ΠΎΠ΄ Π¨Π΅Π»Π»Π°. Π•Π³ΠΎ использованиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ обосновано большСС простым Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния программиста.

2. ΠœΠ΅Ρ‚ΠΎΠ΄ вставки эффСктивСн, ΠΏΡ€ΠΈ условии большого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ пСрСстановки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ²Π»ΡΠ΅Ρ‚ся Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Ρƒ пСрСстановок, проигрывая ΠΏΡ€ΠΈ этом ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Ρƒ сравнСний.

3. ΠŸΡ€ΠΈ использовании Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚ большой Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΏΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ сортировки, поэтому цСлСсообразнСС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠŸΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ° ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ вставок.

4. ИсслСдованиС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π° ΠΌΠ°ΡΡΠΈΠ²Π°Ρ… с Π±ΠΎΠ»ΡŒΡˆΠΎΠΉ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒΡŽ нСупорядочСнности. Для массивов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ‡Ρ‚ΠΈ отсортированными, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ сортировки вставками.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π‘Π»ΠΎΠΊ схСмы..

ОбмСнная сортировка.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° вставкой.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ