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

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. 
Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ пСрСстановки Π΄Π°Π½Π½Ρ‹Ρ…

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

Если ΠΆΠ΅ ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ число Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст сообщСниС Ρ‡Ρ‚ΠΎ сортировка Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° (Рис. 4). Π’Π΅Ρ…Π½ΠΈΠΊΠΎ-экономичСскиС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ЭкономичСская ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚ываСтся. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ" Π’. Π“. Π”Π°Π²Ρ‹Π΄ΠΎΠ² ΠΈΠ·Π΄. «Π’Ρ‹ΡΡˆΠ°Ρ школа», 2005. ВрСбования ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ совмСстимости Π‘Ρ€Π΅Π΄Π° Borland C++ Builder 6. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня" Π’. А… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ пСрСстановки Π΄Π°Π½Π½Ρ‹Ρ… (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ Ρ…ΠΎΠ΄Π΅ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π» ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ ΠΎΠ±Π·ΠΎΡ€ Ρ‚Ρ€Π΅Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки, Π² Ρ‚ΠΎΠΌ числС ΠΎΡ†Π΅Π½ΠΊΠ° ΠΈΡ… ΡΡ„фСктивности. Π‘Ρ‹Π» сдСлан Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ сортировка ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ простых вставок Π±ΠΎΠ»Π΅Π΅ эффСктивна Π² Ρ†Π΅Π»ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π‘Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ простых вставок, простого Π²Ρ‹Π±ΠΎΡ€Π° ΠΈ ΠΏΠΎΠ΄ΡΡ‡Π΅Ρ‚Π° сравнСний. Π”Π°Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ количСством элСмСнтов, ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½Ρ‹Ρ… Π² ΠΊΡƒΡ€ΡΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сортировки ΠΈ ΡƒΠ·Π½Π°Ρ‚ΡŒ врСмя сортировки массива.

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  • 1. Н. Π’ΠΈΡ€Ρ‚. Алгоритмы ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. — Π‘Пб.: НСвский Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚, 2008.
  • 2. https://ru.wikipedia.org/
  • 3. http://kvodo.ru/
  • 4. «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ» Π’. Π“. Π”Π°Π²Ρ‹Π΄ΠΎΠ² ΠΈΠ·Π΄. «Π’Ρ‹ΡΡˆΠ°Ρ школа», 2005
  • 5. «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня» Π’. А. Павловская ΠΈΠ·Π΄. «ΠŸΠΈΡ‚Π΅Ρ€», 2004.

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

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

  • 1. ВСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅
  • 1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
  • 1.1. НаимСнованиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

НаимСнованиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: «Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…».

1.2. НазначСниС ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° создана для сравнСния ΠΏΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ 3-Ρ… способов сортировки Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ динамичСском массивС: простого Π²Ρ‹Π±ΠΎΡ€Π°, простых вставок, подсчСта сравнСний.

  • 2. ВрСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅
  • 2.1. ВрСбования ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ характСристикам

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сортировки Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами, сохранСниС отсортированных массивов Π² Ρ„Π°ΠΉΠ», Π²Ρ‹Π²ΠΎΠ΄ гистограммы для сравнСния скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

2.2. ВрСбования ΠΊ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΠΈ Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ просчитаны ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…. А ΠΈΠΌΠ΅Π½Π½ΠΎ, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π΅ элСмСнтов массива Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ цСлочислСнныС, Π° Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ число Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ большС 10 000. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅.

  • 3. Условия эксплуатации
  • 3.1. ΠšΠ»ΠΈΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ условия эксплуатации

ΠšΠ»ΠΈΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ условия эксплуатации, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ характСристики, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ трСбованиям, ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹ΠΌ ΠΊ Ρ‚СхничСским срСдствам Π² Ρ‡Π°ΡΡ‚ΠΈ условий ΠΈΡ… ΡΠΊΡΠΏΠ»ΡƒΠ°Ρ‚Π°Ρ†ΠΈΠΈ.

3.2. ВрСбования ΠΊ ΡΠΎΡΡ‚Π°Π²Ρƒ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ тСхничСских срСдств Π’ ΡΠΎΡΡ‚Π°Π² тСхничСских срСдств Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ IΠ’Πœ-совмСстимый ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ (ΠŸΠ­Π’Πœ), процСссор Pentium-2.0Hz, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ объСмом Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 512 ΠΌΠ±, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму Π¦indows xp.

3.3. ВрСбования ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ совмСстимости Π‘Ρ€Π΅Π΄Π° Borland C++ Builder 6.

4. ВрСбования ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Бостав ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΡΠ΅Π±Ρ тСхничСскоС Π·Π°Π΄Π°Π½ΠΈΠ΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ испытаний, руководство ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

5. Π’Π΅Ρ…Π½ΠΈΠΊΠΎ-экономичСскиС ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ЭкономичСская ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ€Π°ΡΡΡ‡ΠΈΡ‚ываСтся.

  • 6. Π‘Ρ‚Π°Π΄ΠΈΠΈ ΠΈ ΡΡ‚Π°ΠΏΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
  • 6.1. Π‘Ρ‚Π°Π΄ΠΈΠΈ ΠΈ ΡΡ‚Π°ΠΏΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

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

НаимСнованиС этапа Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΠž.

Π‘Ρ€ΠΎΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ВыполнСния.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΊΠ° ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ.

Анализ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.

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

ВСстированиС.

6.2. ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ контроля ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠΊΠΈ Π’Π°Π±Π»ΠΈΡ†Π° 6.

НаимСнованиС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ этапа выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘Ρ€ΠΎΠΊΠΈ контроля.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния.

ΠžΡ‚ΠΌΠ΅Ρ‚ΠΊΠ° ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠΊΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ этапа.

БоставлСниС тСхничСского задания.

29.09.14.

ОписаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

13.10.14.

Π‘Π»ΠΎΠΊ-схСмы Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

20.10.14.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

10.11.14.

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

24.11.14.

Вторая вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

8.12.14.

РасчСтно-ΠΏΠΎΡΡΠ½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ записка.

Π”ΠΎ 15.12.14.

Π—Π°Ρ‰ΠΈΡ‚Π° курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘ 22.12.14 ΠΏΠΎ 29.12.14.

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

Алгоритм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° простых вставок.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ пСрСстановки Π΄Π°Π½Π½Ρ‹Ρ….

Алгоритм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° простого Π²Ρ‹Π±ΠΎΡ€Π°.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ пСрСстановки Π΄Π°Π½Π½Ρ‹Ρ….

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

Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставлСн Π½Π° Π ΠΈΡ. 1.

Рис.1.

Рис. 1.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΠΎΠ»Π΅ «ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов» Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ». По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΡΡ‚ΠΎΠΌ ΠΏΠΎΠ»Π΅ стоит число 10 000, Ρ‚.ΠΊ. это условиС задания. Если ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ число мСньшС 10 000, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сообщСниС ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²ΠΎΠ΄Π° Рис 2.

Рис. 2.

Рис. 2.

Если ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΏΠΎΠ»Π΅ «ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов» символы Π½Π΅ ΡΠ²Π»ΡΡŽΡˆΠΈΠ΅ΡΡ числами ΠΈΠ»ΠΈ вСщСствСнноС число, Ρ‚ΠΎ Ρƒ Π½Π°Ρ Π²Ρ‹ΠΉΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сообщСниС:

Рис. 3.

Рис. 3.

Если ΠΆΠ΅ ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ число Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст сообщСниС Ρ‡Ρ‚ΠΎ сортировка Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π° (Рис. 4).

Рис. 4.

Рис. 4.

ПослС наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ «OK» отобразится гистограмма (Рис. 5).

Рис. 5.

Рис. 5.

Π¦ΠΈΡ„Ρ€Π°ΠΌΠΈ здСсь ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ врСмя выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…. ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ столбСц — Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ простого Π²Ρ‹Π±ΠΎΡ€Π°, Π·Π΅Π»Π΅Π½Ρ‹ΠΉ это сортировка вставками ΠΈ ΡΠΈΠ½ΠΈΠΉ подсчСт сравнСний.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° записываСт 3 тСстовых Ρ„Π°ΠΉΠ»Π°. Алгоритм простого Π²Ρ‹Π±ΠΎΡ€Π° создаСт Ρ„Π°ΠΉΠ» «SimpleChoose.txt». Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Π ΠΈΡ. 6.

Рис. 6.

Рис. 6.

Алгоритм сортировки вставками создаСт Ρ„Π°ΠΉΠ» «InsertionSort» (Рис.7).

Рис. 7.

Рис. 7.

Алгоритм подсчСта сравнСний создаСт Ρ„Π°ΠΉΠ» «CountCompares» (Рис. 8).

Рис. 8.

Рис. 8.

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

Листнинг ΠœΠΎΠ΄ΡƒΠ»ΡŒ MainUnit.h.

//—————————————————————————————————————;

#ifndef MainUnitH.

#define MainUnitH.

//—————————————————————————————————————;

#include.

#include.

#include.

#include.

#include.

#include.

#include.

//—————————————————————————————————————;

class TForm1: public TForm.

{.

__published: // IDE-managed Components.

TImage *Img_Gis;

TLabel *L_KolEl;

TEdit *Ed_KolEl;

TButton *Btn_Sort;

TLabel *Label1;

void __fastcall Btn_SortClick (TObject *Sender);

private: // User declarations.

// ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅ ΠΈ Ρ€ΠΈΡΡƒΠ΅Ρ‚ оси.

void DrawField (void);

// ΠœΠ΅Ρ‚ΠΎΠ΄ простого Π²Ρ‹Π±ΠΎΡ€Π°.

int SimpleChoose (int *Mass, int Kol);

// ΠœΠ΅Ρ‚ΠΎΠ΄ простых вставок.

int InsertionSort (int *Mass, int Kol);

// ΠœΠ΅Ρ‚ΠΎΠ΄ подсчСта сравнСний.

int CountCompares (int *Mass, int Kol);

// Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ гистограммы.

void DrawGis (int first, int second, int third);

public: // User declarations.

__fastcall TForm1(TComponent* Owner);

};

//—————————————————————————————————————;

extern PACKAGE TForm1 *Form1;

//—————————————————————————————————————;

#endif.

ΠœΠΎΠ΄ΡƒΠ»ΡŒ MainUnit.cpp.

//—————————————————————————————————————;

#include.

#pragma hdrstop.

#include «MainUnit.h» .

//—————————————————————————————————————;

#pragma package (smart_init).

#pragma resource «*.dfm» .

TForm1 *Form1;

//—————————————————————————————————————;

__fastcall TForm1: TForm1(TComponent* Owner).

: TForm (Owner).

{.

this->DrawField ();

}.

//—————————————————————————————————————;

void TForm1: DrawField (void).

{.

int xo, yo; // Начало ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

// УстанавливаСм Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

xo = 20;

yo = Img_Gis->Height 20;

// ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ ΠΏΠΎΠ»Π΅.

this->Img_Gis->Canvas->Brush->Color = clWhite;

this->Img_Gis->Canvas->FloodFill (10,10,clYellow, fsBorder);

// РисуСм оси.

this->Img_Gis->Canvas->MoveTo (xo, yo);

this->Img_Gis->Canvas->LineTo (xo, 20);

this->Img_Gis->Canvas->MoveTo (xo, yo);

this->Img_Gis->Canvas->LineTo (Img_Gis->Width 20, yo);

}.

//—————————————————————————————————————;

void __fastcall TForm1: Btn_SortClick (TObject *Sender).

{.

long i, Kol; // ИндСкс ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов массива.

int *Mass1, *Mass2, *Mass3, // Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ‹.

// ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ².

simplechoose, // ΠŸΡ€ΠΎΡΡ‚ΠΎΠ³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π°.

insertionsort, // ΠŸΡ€ΠΎΡΡ‚Ρ‹Ρ… вставок.

countcompares; // ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ сравнСний.

// Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл.

randomize ();

try.

{.

// Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ количСство элСмСнтов с Ρ„ΠΎΡ€ΠΌΡ‹.

Kol = StrToInt (Ed_KolEl->Text);

if (Kol>=10 000).

{.

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ динамичСскиС массивы.

Mass1 = new int[Kol];

Mass2 = new int[Kol];

Mass3 = new int[Kol];

// ЗаполняСм массивы случайными числами.

for (i=0;i.

{.

Mass1[i] = random (Kol*2);

Mass2[i] = Mass1[i];

Mass3[i] = Mass1[i];

}.

// Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ сортировки.

simplechoose = SimpleChoose (Mass1,Kol);

insertionsort = InsertionSort (Mass2,Kol);

countcompares = CountCompares (Mass3,Kol);

// Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΎ ΠΊΠΎΠ½Ρ†Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Application->MessageBox («Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°» ," Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅", MB_OK);

// РисуСм гистограмму.

DrawGis (simplechoose, insertionsort, countcompares);

}.

else.

Application->MessageBox («ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ мСньшС 10 000» ,.

" ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π²Π²ΠΎΠ΄", MB_OK);

}.

catch (EConvertError&).

{.

Application->MessageBox («Π’Ρ‹ Π²Π²Π΅Π»ΠΈ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ число» ,.

" ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π²Π²ΠΎΠ΄", MB_OK);

}.

}.

//—————————————————————————————————————;

// ΠœΠ΅Ρ‚ΠΎΠ΄ простого Π²Ρ‹Π±ΠΎΡ€Π°.

int TForm1: SimpleChoose (int *Mass, int Kol).

{.

FILE *f;

int start, end, vremya, // Начало ΠΈ ΠΊΠΎΠ½Π΅Ρ† отсчСта.

i, j, // Π˜Π½Π΄Π΅ΠΊΡΡ‹.

Max, n; // ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ€

// НачинаСм отсчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

start = clock ();

// ВыполняСм сортировку.

for (i=Kol-1;i>0;i—).

{.

//УстанавливаСм Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π½ΠΎΠΌΠ΅Ρ€

//для максимального элСмСнта.

Max = Mass[i];

n =i;

// Π˜Ρ‰Π΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт.

for (j=0;j<=i-1;j++).

{.

if (Mass[j]> Max).

{.

Max= Mass[j];

Mass[j]= Mass[n];

Mass[n]=Max;

}.

}.

}.

// Π—Π°ΠΊΠ°Π½Ρ†ΠΈΠ²Π°Π΅ΠΌ отсчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

end = clock ();

vremya = end start;

// ЗаписываСм осортированный массив Π² Ρ„Π°ΠΉΠ».

f = fopen («SimpleChoose.txt» ," w");

for (i=0;i.

fprintf (f," %d", Mass[i]);

// Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ».

fclose (f);

return vremya;

}.

//—————————————————————————————————————;

// ΠœΠ΅Ρ‚ΠΎΠ΄ простых вставок.

int TForm1: InsertionSort (int *Mass, int Kol).

{.

FILE *f;

int start, end, vremya, // Начало ΠΈ ΠΊΠΎΠ½Π΅Ρ† отсчСта.

i, j, k, // Π˜Π½Π΄Π΅ΠΊΡΡ‹.

Tmp; // Π‘ΡƒΡ„Π΅Ρ€

// НачинаСм отсчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

start = clock ();

// ВыполняСм сортировку.

for (i=0;i.

{.

Tmp=Mass[i];

for (j=i-1;j>=0 && Mass[j]>Tmp;j—).

Mass[j+1] = Mass[j];

Mass[j+1] = Tmp;

}.

// Π—Π°ΠΊΠ°Π½Ρ†ΠΈΠ²Π°Π΅ΠΌ отсчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

end = clock ();

vremya = end start;

// ЗаписываСм осортированный массив Π² Ρ„Π°ΠΉΠ».

f = fopen («InsertionSort.txt» ," w");

for (i=0;i.

fprintf (f," %d", Mass[i]);

// Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ».

fclose (f);

return vremya;

}.

//—————————————————————————————————————;

// ΠœΠ΅Ρ‚ΠΎΠ΄ подсчСта сравнСний.

int TForm1: CountCompares (int *Mass, int Kol).

{.

FILE *f;

int start, end, vremya, // Начало ΠΈ ΠΊΠΎΠ½Π΅Ρ† отсчСта.

i, j, k, // Π˜Π½Π΄Π΅ΠΊΡΡ‹.

*b, *c; // Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ массивы.

// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ массивы.

b = new int[Kol];

c= new int[Kol];

// НачинаСм отсчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

start = clock ();

// ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ сортировку.

for (i =1; i <= Kol; i ++).

c[i]=0;

for (i=Kol; i>=2;i—).

for (j=i-1; j>=1; j—).

if (Mass[i].

c[j]++;

else.

c[ i ]++;

for (i =1; i <= Kol; i ++).

b[c[i]] = Mass[i];

// Π—Π°ΠΊΠ°Π½Ρ†ΠΈΠ²Π°Π΅ΠΌ отсчСт Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

end = clock ();

vremya = end start;

// ЗаписываСм осортированный массив Π² Ρ„Π°ΠΉΠ».

f = fopen («CountCompares.txt» ," w");

for (i=0;i.

fprintf (f," %d", b[i]);

// Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ».

fclose (f);

return vremya;

}.

//—————————————————————————————————————;

// Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ гистограммы.

void TForm1: DrawGis (int first, int second, int third).

{.

int Max; // МаксимальноС врСмя.

float del, // Π’ΠΎΡ‡Π΅ΠΊ Π½Π° Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

xo, yo, // Начало ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

w, h; // Π¨ΠΈΡ€ΠΈΠ½Π° ΠΈ Π²Ρ‹ΡΠΎΡ‚Π° столбца.

char str[10]; // ВрСмя Π² ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ….

Max = first;

if (second > Max).

Max = second;

if (third > Max).

Max = third;

del = (float)(Img_Gis->Height-40)/Max;

// ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ ΠΏΠΎΠ»Π΅.

DrawField ();

// УстанавливаСм Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

xo = 20;

yo = Img_Gis->Height 20;

w = (Img_Gis->Width 40)/3;

// РисуСм гистограммы.

// ΠœΠ΅Ρ‚ΠΎΠ΄ простого Π²Ρ‹Π±ΠΎΡ€Π°.

if (first≠0).

h = (int)first*del;

else.

h=0;

Img_Gis->Canvas->Rectangle (xo, yo, xo+w, yo-h);

this->Img_Gis->Canvas->Brush->Color = clRed;

this->Img_Gis->Canvas->FloodFill (xo+w/2,yo-h/2,clBlack, fsBorder);

itoa (first, str, 10);

this->Img_Gis->Canvas->Brush->Color = clWhite;

this->Img_Gis->Canvas->TextOut (xo+10,yo-h-15,str);

// ΠœΠ΅Ρ‚ΠΎΠ΄ простых вставок.

if (second≠0).

h = (int)second*del;

else.

h=0;

Img_Gis->Canvas->Rectangle (xo+w, yo, xo+2*w, yo-h);

this->Img_Gis->Canvas->Brush->Color = clGreen;

this->Img_Gis->Canvas->FloodFill (xo+w+w/2,yo-h/2,clBlack, fsBorder);

itoa (second, str, 10);

this->Img_Gis->Canvas->Brush->Color = clWhite;

this->Img_Gis->Canvas->TextOut (xo+w+10,yo-h-15,str);

// ΠœΠ΅Ρ‚ΠΎΠ΄ подсчСта сравнСний.

if (third≠0).

h = third*del;

else.

h=0;

Img_Gis->Canvas->Rectangle (xo+2*w, yo, xo+3*w, yo-h);

this->Img_Gis->Canvas->Brush->Color = clBlue;

this->Img_Gis->Canvas->FloodFill (xo+2*w+w/2,yo-h/2,clBlack, fsBorder);

itoa (third, str, 10);

this->Img_Gis->Canvas->Brush->Color = clWhite;

this->Img_Gis->Canvas->TextOut (xo+2*w+10,yo-h-15,str);

}.

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