Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ Π‘ΠΈ - руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 62

Автор M. УЭИВ

     ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ посмотритС, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΎΠ½Π° Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Π°. Π‘Π°ΠΌΠΎΠ΅ простоС - ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ limit Ρ€Π°Π²Π΅Π½ 1 ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ шаг Π·Π° шагом.


Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

     Рассмотрим Π΅Ρ‰Π΅ Ρ€Π°Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main( ):

 

main(  )

{

int numbers[MAXSIZE]; /* массив для ввода */

int size;     /* количСство Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… элСмСнтов */

size = getarray(numbers, MAXSIZE); /* ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π²Π²ΠΎΠ΄ Π² массив */

sort(numbers, size); /* сортировка массива */

printf(numbers, size); /* ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ отсортированного массива */

}

     ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ функция sort() ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ массив Ρ†Π΅Π»Ρ‹Ρ… чисСл, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для сортировки, ΠΈ счСтчик количСства элСмСнтов, ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… сортировкС. На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ получаСтся массив, содСрТащий отсортированныС числа. ΠœΡ‹ всС Π΅Ρ‰Π΅ Π½Π΅ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сортировку, поэтому ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ это описаниС.

     ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сортировки. БобираСмся Π»ΠΈ ΠΌΡ‹ вСсти сортировку ΠΎΡ‚ большСго ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ, ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚? ΠœΡ‹ свободны Π² Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΈ допустим, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ большСго ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ. (МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΡƒΡŽ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ способ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π΅ΠΉ ΠΎ своСм Π²Ρ‹Π±ΠΎΡ€Π΅.)

     Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сортировки. Π’ настоящСС врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки; возьмСм ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых простых.

Π’ΠΎΡ‚ наш ΠΏΠ»Π°Π½ Π½Π° псСвдокодС:

ΠΎΡ‚ n = ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту Π΄ΠΎ n = Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅ΠΌΡƒ - ΠΊ- послСднСму элСмСнту Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ самоС большоС ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ чисСл ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ Π² n-ю ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ.

     Он выполняСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡƒΡΡ‚ΡŒ n = 1. ΠœΡ‹ просматриваСм вСсь массив, Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ самоС большоС число ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт. Π—Π°Ρ‚Π΅ΠΌ n = 2, ΠΈ ΠΌΡ‹ ΠΎΠΏΡΡ‚ΡŒ просматриваСм вСсь массив, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ самоС большоС ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ чисСл ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π΅Π³ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ этот процСсс Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ достигнСм блиТайшСго - ΠΊ - послСднСму элСмСнту. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π° элСмСнта. ΠœΡ‹ сравниваСм эти числа ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ большСС Π² элСмСнт, блиТайший - ΠΊ - послСднСму. ΠžΡΡ‚Π°Π²ΡˆΠ΅Π΅ΡΡ самоС мСньшСС ΠΈΠ· всСх чисСл ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² послСдний элСмСнт.

     Π­Ρ‚ΠΎ выглядит ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ с Ρ†ΠΈΠΊΠ»ΠΎΠΌ for, Π½ΠΎ ΠΌΡ‹ всС ΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ процСсс "Π½Π°ΠΉΡ‚ΠΈ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ" Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ. Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· самоС большоС ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ чисСл? Π’ΠΎΡ‚ ΠΎΠ΄ΠΈΠ½ способ. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнты ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎΡΡ массива. Если Π²Ρ‚ΠΎΡ€ΠΎΠΉ большС, помСняйтС ΠΈΡ… мСстами. Π’Π΅ΠΏΠ΅Ρ€ΡŒ сравнитС ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт с Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΠΌ. Если Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ большС, помСняйтС мСстами эти Π΄Π²Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· больший элСмСнт пСрСмСщаСтся Π²Π²Π΅Ρ€Ρ…. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠΊΠ° Π½Π΅ сравним ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт с послСдним. Если ΠΌΡ‹ дошли Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, самоС большоС число Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ элСмСнтС ΠΎΡΡ‚Π°Π²ΡˆΠ΅Π³ΠΎΡΡ массива. По сущСству ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ отсортированный массив для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, Π½ΠΎ остаток массива находится Π² бСспорядкС. На псСвдокодС это ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

для n = ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎ послСднСго элСмСнта сравниваСм n-ΠΉ элСмСнт с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ; Ссли n-ΠΉ большС, мСняСм ΠΈΡ… мСстами.

     Π­Ρ‚ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» for. Π•Π³ΠΎ слСдуСт Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠΉ элСмСнт массива Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСдуСт ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π°. Записывая ΠΎΠ±Π΅ части Π½Π° псСвдокодС ΠΈ пСрСводя ΠΈΡ… Π½Π° язык Π‘ΠΈ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ:

/* сортировка массива Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² порядкС убывания */

sortarray(array, limit)

int array[ ], limit;

{

int top, search;

for(top = 0; top < limit - 1; top++)

for(search = top + 1; search < limit; search++)

if(array [search] > array[top] 

interchange(&array[search], &array[top] );

}

ΠœΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅Ρ‰Π΅ Π² Π³Π». 9 Π±Ρ‹Π»Π° создана функция ΠΎΠ±ΠΌΠ΅Π½Π°, поэтому ΠΌΡ‹ использовали Π΅Π΅ здСсь. Π’Π°ΠΊ ΠΊΠ°ΠΊ функция interchange "Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚" с двумя элСмСнтами массива, Π° Π½Π΅ со всСм массивом, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ адрСса Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ… ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… нас элСмСнтов. (Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ имя array являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° вСсь массив, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ &, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты.)

     ΠœΡ‹ использовали top Π² качСствС индСкса для элСмСнта массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ являСтся Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ Π½Π΅ отсортированной части массива. ИндСкс search ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΏΠΎ массиву Π² порядкС убывания Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ тСкстов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ обозначСния i ΠΈ j для этих индСксов, ΠΎΠ΄Π½Π°ΠΊΠΎ это ослоТняСт ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ происходит.

     Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ "ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировкой", Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ самоС большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ поднимСтся Π²Π²Π΅Ρ€Ρ…. ИмСнно Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ€rint( ).

ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…


 

     Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° достаточно проста:

/* ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ массива */

print(array, limit)

int array[ ], limit;

{

int index;

for(index = 0; index <= limit; index ++)

printf(" %d\n", array[index]);

}

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΠΎ строкам, Π° Π½Π΅ Π² столбСц, ΠΌΠΎΠΆΠ½ΠΎ всСгда Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, оставив Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Аналогично, Ссли ΠΌΡ‹ нашли Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ большС нравится, ΠΌΠΎΠΆΠ½ΠΎ. Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· приятных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

     Π”Π°Π²Π°ΠΉΡ‚Π΅ скомпилируСм ΠΈ протСстируСм Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сортировки. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… условий, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ MAXSIZE Π½Π° 5.

     Π’ нашСм ΠΏΠ΅Ρ€Π²ΠΎΠΌ тСстС Π±ΡƒΠ΄Π΅ΠΌ ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ числами Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ откаТСтся ΠΈΡ… ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ.

     Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ считываниС чисСл послС 5 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈΠ»ΠΈ Ссли встрСтился символ EOF.

12 34 54 23 67

ВсС 5 элСмСнтов массива Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹.

67

54

34

23

12

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° считала 5 чисСл ΠΈ отсортировала ΠΈΡ…. Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ссли ΠΎΠ½Π° остановится, встрСтив символ EOF.

     Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ считываниС чисСл послС 5 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈΠ»ΠΈ Ссли встрСтился символ EOF.

456 928

-23  +16

Клавиша [control -z] (ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ EOF Π² Π½Π°ΡˆΡƒ систСму)

928

456

16

-23

БыстрСС Ρ‡Π΅ΠΌ Π²Ρ‹ смоТСтС ΡΠΊΠ°Π·Π°Ρ‚ΡŒ "экология это Π½Π°ΡƒΠΊΠ° ΠΎ домашнСм хозяйствС", Ρ†Π΅Π»Ρ‹ΠΉ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ массив отсортирован.

 

     УспСх! Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ просто, Π½ΠΎ Π½Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π Π°Π·Π΄Π΅Π»ΠΈΠ² Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° нСбольшиС части ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π², ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ каТдая ΠΈΠ· Π½ΠΈΡ…, ΠΌΡ‹ свСли Π·Π°Π΄Π°Ρ‡Ρƒ ΠΊ частям, ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‰ΠΈΠΌΡΡ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ создали, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ части ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

     Π­Ρ‚ΠΈΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ наши ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π°Π΄ ΠΈ сдСлаСм ΠΎΠ±Π·ΠΎΡ€ Π³Π»Π°Π²Ρ‹.

ΠžΠ‘Π—ΠžΠ  

     Π§Π΅Π³ΠΎ ΠΆΠ΅ ΠΌΡ‹ достигли? Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с практичСской стороны, Ρ‚ΠΎ ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сортировки Ρ†Π΅Π»Ρ‹Ρ… чисСл. ΠŸΡ€ΠΈ этом создали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getint( ), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с пСдагогичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ нСсколько основных ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

     Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° самый сущСствСнный ΠΌΠΎΠΌΠ΅Π½Ρ‚:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π° Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ± ΠΈ ошибок. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈ содСрТании Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НСобходимо Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, принимая Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ взаимодСйствиС ΠΈΡ… Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. ИдСя Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² достиТСнии ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ€Π°Π·Π±ΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ стСпСни ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ простоты ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠΉΡ‚Π΅, исходя ΠΈΠ· этого. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ошибок, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ дСйствия Π² мСстах ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½ΠΈΠΉ, ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ослоТнСниС. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ввСсти Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΉ ситуации.

     Если создаСтся функция, сначала ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. Π Π΅ΡˆΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅, какая информация Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π½Π΅Π΅, Π° какая Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Какими Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹? Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚, ΠΈΠ»ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅? Если Π²Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚Π΅ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ всС эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.