Π‘Π°ΠΊΠ°Π»Π°Π²Ρ€
Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Ρ‹Π΅ ΠΈ курсовыС Π½Π° Π·Π°ΠΊΠ°Π·

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки. 
ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠ•Π’ΠžΠ”Π« Π‘ΠžΠ Π’Π˜Π ΠžΠ’ΠšΠ˜ ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΎΡ‡Π΅Π½ΡŒ распространСнной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ являСтся сортировка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚. Π΅. располоТСниС списка элСмСнтов Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ порядкС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, слова ΠΏΠΎ Π°Π»Ρ„Π°Π²ΠΈΡ‚Ρƒ ΠΈΠ»ΠΈ числа Π² Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌ ΠΈΠ»ΠΈ ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС).

БущСствуСт мноТСство Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки элСмСнтов. НаиболСС простой ΠΈΠ· Π½ΠΈΡ… — ΠΌΠ΅Ρ‚ΠΎΠ΄ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°». Алгоритм рСализуСтся Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ². Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ всС элСмСнты массива, ΠΏΠΎΠΏΠ°Ρ€Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ рядом стоящиС элСмСнты, ΠΈ Π΅ΡΠ»ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ большС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ (ΠΏΡ€ΠΈ сортировкС ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ) элСмСнты ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° являСтся индСкс (Π½ΠΎΠΌΠ΅Ρ€) элСмСнта массива. Для ΠΏΠΎΠ»Π½ΠΎΠΉ сортировки такая пСрСстановка Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° n-1 Ρ€Π°Π·, Π³Π΄Π΅ n — количСство элСмСнтов Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Для этого организуСтся внСшний Ρ†ΠΈΠΊΠ», ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся шаг сортировки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ пСрСстановки элСмСнтов.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Β«ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°Β».

Рисунок 1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°».

Π₯отя Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ сортировка Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π°ΡΡŒ Π·Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ шага, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒΡΡ Π΅Ρ‰Π΅ Π΄Π²Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚.ΠΊ. ΠΏΠΎΠ»Π½ΠΎΠ΅ число ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС размСрности массива.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π±Π»ΠΎΠΊ-схСма рассмотрСнного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Β«ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°Β».

Рисунок 2. Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°».

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ m Π²Π²Π΅Π΄Π΅Π½Π° для возмоТности ΠΎΠ±ΠΌΠ΅Π½Π° значСниями ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, k ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΡˆΠ°Π³ΠΈ сортировки.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘++ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Рисунок 3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сортировки элСмСнтов массива ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°».

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ являСтся нСэффСктивным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, вслСдствиС большого числа сравнСний.

Π‘ΠΎΠ»Π΅Π΅ эффСктивным являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ прямого Π²Ρ‹Π±ΠΎΡ€Π°.

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ происходит просмотр всСго списка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ Π²Ρ‹Π±ΠΎΡ€ ΠΈΠ· Π½Π΅Π³ΠΎ минимального ΠΈΠ»ΠΈ максимального (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΡ€ΡΠ΄ΠΊΠ° сортировки), Π΄Π°Π»Π΅Π΅ располоТСниС Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ, ΡΡ‚ΠΎΡΠ²ΡˆΠΈΠΌ Ρ‚Π°ΠΌ Ρ€Π°Π½Π΅Π΅.

Π—Π°Ρ‚Π΅ΠΌ эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° повторяСтся, Π½ΠΎ ΠΏΠΎΠΈΡΠΊ минимального (максимального) значСния происходит ΡƒΠΆΠ΅ со Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ Ρ‚. Π΄. Π‘Ρ…Π΅ΠΌΠ° этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4.

сортировка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ обСспСчСниС.

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ прямого Π²Ρ‹Π±ΠΎΡ€Π°.

Рисунок 4. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ прямого Π²Ρ‹Π±ΠΎΡ€Π° Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ рСализуСтся сортировка ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ прямого Π²Ρ‹Π±ΠΎΡ€Π°, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½ΠΈΠΆΠ΅.

// сортируСм элСмСнты массива ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ.

const int n=20;

int list [n];

int temp;//пСрСмСнная для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния ΠΏΡ€ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ значСниями.

int i;//пСрСмСнная управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ (Π½ΠΎΠΌΠ΅Ρ€ элСмСнта массива).

int k;//пСрСмСнная управлСния Ρ†ΠΈΠΊΠ»ΠΎΠΌ (Π½ΠΎΠΌΠ΅Ρ€ шага сортировки).

int nmin;//Π½ΠΎΠΌΠ΅Ρ€ минимального значСния.

for (ΠΊ=0; i < ΠΊ 1; i++).

{.

nmin = ΠΊ;

// ΠΈΡ‰Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ минимального элСмСнта срСди Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ list [ i … n -1].

for (i = k+1; i< n; i++).

if (list[i] < list[ nmin ]) nmin = i;

//мСняСм мСстами list[ nmin ] ΠΈ list[ k ].

temp = list[ nmin ];

list[ nmin ]= list[ k ];

list[ k ] = temp;

}.

}.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ поиск минимального значСния Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ происходит Π² ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части списка.

Π§Ρ‚ΠΎΠ±Ρ‹ произвСсти сортировку ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ, Π½ΡƒΠΆΠ½ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС вмСсто минимального значСния Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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