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

Алгоритмы поиска ΠΈ сортировки Π΄Π°Π½Π½Ρ‹Ρ…

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

ΠŸΡ€ΠΈ сортировкС Π¨Π΅Π»Π»Π° сначала ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой значСния, отстоящиС ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ расстоянии d. ПослС этого ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° повторяСтся для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ d, Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ся сортировка Π¨Π΅Π»Π»Π° упорядочиваниСм элСмСнтов ΠΏΡ€ΠΈ d=1 (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ сортировкой вставками). Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ сортировки Π¨Π΅Π»Π»Π° Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… случаях обСспСчиваСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ элСмСнты… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Алгоритмы поиска ΠΈ сортировки Π΄Π°Π½Π½Ρ‹Ρ… (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1. ΠžΠ±Π·ΠΎΡ€ прСдприятия ΠΈ ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡

1.1 ΠžΠ±Π·ΠΎΡ€ прСдприятия

1.2 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свСдСния ΠΏΡ€ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки ΠΈ ΠΏΠΎΠΈΡΠΊΠ°

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства ΠΈ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

3.1 ОписаниС процСсса создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства

3.2 Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ исслСдования Π² Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ поиска Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠΌ исслСдования Π² Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ способы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² поиска Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования высокого уровня, Π² Ρ‡Π°ΡΡ‚ности Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Delphi.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС Π·Π°Π΄Π°Ρ‡ΠΈ:

1. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ исслСдованиС рассматриваСмой ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния структуры ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

2. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ основныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ ΠΈΡ… ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ использования.

3. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ основныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ поиска Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌ ΠΈΡ… ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ использования.

4. Π—Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рассмотрСнныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… создаваСмого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства.

5. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для обучСния Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

НСобходимо Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вопросами исслСдования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², ΠΈΡ… ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ, Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π² Ρ€Π°Π·Π½ΠΎΠ΅ врСмя занимались: Π›Π΅Π²ΠΈΡ‚ΠΈΠ½ А., Π“ΡƒΠ΄ΠΌΠ°Π½ Π‘., Π₯ΠΈΠ΄Π΅Ρ‚Π½ΠΈΠ΅ΠΌΠΈ Π‘., Ахо А., Π₯Π»ΠΎΠΏΠΊΡ€ΠΎΡ„Ρ‚ Π”ΠΆ., Ульман Π”ΠΆ., Π¦Π΅ΠΉΡ‚Π»ΠΈΠ½ Π“. Π•., ΠšΠ½ΡƒΡ‚ Π”., Π’ΠΈΡ€Ρ‚ Н., Π›ΠΎΡ€ΠΈΠ½ Π“., МакконнСлл Π”ΠΆ.

ЦСль Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ — исслСдованиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² поиска ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ Π½Π°Π²Ρ‹ΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ — написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сортировки Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….

1. ΠžΠ±Π·ΠΎΡ€ прСдприятия ΠΈ ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

1.1 ΠžΠ±Π·ΠΎΡ€ прСдприятия ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ Π°ΠΊΡ†ΠΈΠΎΠ½Π΅Ρ€Π½ΠΎΠ΅ общСство «ΠšΠΎΠΌΠΈΡ‚Π΅ΠΊΡ» — ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹ΠΉ Π»ΠΈΠ΄Π΅Ρ€ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Π΅ Π½Π΅Ρ‚ΠΊΠ°Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΈ ΡΠΈΠ½Ρ‚СтичСских Π²ΠΎΠ»ΠΎΠΊΠΎΠ½ Π² Π ΠΎΡΡΠΈΠΈ.

ОАО «ΠšΠΎΠΌΠΈΡ‚Скс» находится Π² Π³ΠΎΡ€ΠΎΠ΄Π΅ Π‘Ρ‹ΠΊΡ‚Ρ‹Π²ΠΊΠ°Ρ€Π΅, столицС РСспублики Коми, Π½Π° ΡΠ΅Π²Π΅Ρ€ΠΎ-востокС СвропСйской части Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ. Компания Π±Ρ‹Π»Π° создана Π² 1979 Π³ΠΎΠ΄Ρƒ ΠΈ Π² Π½Π°ΡΡ‚оящСС врСмя Π² Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠΊΠΎΠ»ΠΎ 1000 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ.

ОАО «ΠšΠΎΠΌΠΈΡ‚Скс» ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π² Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π³ΠΈΠΎΠ½Π°Ρ… России: ООО «ΠšΠΎΠΌΠΈΡ‚Скс сСрвис» (Π³. Москва), ООО «ΠšΠžΠœΠ˜Π’Π•ΠšΠ‘ΠΠ•Π’Π» (Π³. Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³), Π—ΠΠž «ΠšΠΎΠΌΠΈΡ‚Скс-Авто» (Π³. Π’ΠΎΠ»ΡŒΡΡ‚Ρ‚ΠΈ), Π€ΠΈΠ»ΠΈΠ°Π» «ΠšΠΎΠΌΠΈΡ‚Скс-ΠšΠΈΡ€ΠΎΠ²» (Π³. ΠšΠΈΡ€ΠΎΠ²), ООО «ΠšΠΎΠΌΠΈΡ‚Скс Ρ‚Ρ€Π΅ΠΉΠ΄ΠΈΠ½Π³» (Π³. Π‘Ρ‹ΠΊΡ‚Ρ‹Π²ΠΊΠ°Ρ€), ООО «ΠšΠΎΠΌΠΈΡ‚Скс Π›ΠΈΠ½» (Π³. Π‘Ρ‹ΠΊΡ‚Ρ‹Π²ΠΊΠ°Ρ€) ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

ОАО «ΠšΠΎΠΌΠΈΡ‚Скс» являСтся Ρ‡Π»Π΅Π½ΠΎΠΌ ЕвропСйской ассоциации ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² Π³ΠΈΠ³ΠΈΠ΅Π½Ρ‹ ΠΈ Π½Π΅Ρ‚ΠΊΠ°Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² (EDANA), Ассоциации ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ Π½Π΅Ρ‚ΠΊΠ°Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² (ΠΠ‘Π˜ΠΠ•Πœ).

Компания ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ извСстных Π² Π½Π°ΡΡ‚оящСС врСмя Π² ΠΌΠΈΡ€Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ производства Π½Π΅Ρ‚ΠΊΠ°Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² «ΡΡƒΡ…ΠΈΠΌ способом». Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ оборудования, слоТившийся Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π·Π° 30 Π»Π΅Ρ‚, ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ профСссионалов, Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ Π·Π° Π³ΠΎΠ΄Ρ‹ становлСния Ρ€Ρ‹Π½ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ спСктр высококачСствСнной ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ. На ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠΈ сСртифицирована систСма качСства Π½Π° ΡΠΎΠΎΡ‚вСтствиС трСбованиям ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ стандарта ISO 9001:2008.

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π½Π° ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΡ‚Π½Π° с ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ спСктром свойств, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π² ΡΠ°ΠΌΡ‹Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… областях. Π­Ρ‚ΠΎ достигаСтся посрСдством:

Β· использования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π²ΠΎΠ»ΠΎΠΊΠΎΠ½;

Β· высококачСствСнного процСсса формирования холста;

Β· использования Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ скрСплСния холста:

ь Ρ…имичСским способом;

ь Ρ‚СрмичСским способом;

ь ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ;

ь Ρ…ΠΎΠ»ΡΡ‚ΠΎΠΏΡ€ΠΎΡˆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ;

ь ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов;

Β· Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ ΠΎΡ‚Π΄Π΅Π»ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΠΎΡ‚Π½Π°.

ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎΠ΅ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Π½ΠΈΠ΅ мощностСй ΠΏΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΡƒ синтСтичСских Π²ΠΎΠ»ΠΎΠΊΠΎΠ½ Π²Ρ‹Π²Π΅Π»ΠΎ ОАО «ΠšΠΎΠΌΠΈΡ‚Скс» Π² Π»ΠΈΠ΄Π΅Ρ€Ρ‹ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ производства Π² Π ΠΎΡΡΠΈΠΈ. Π’ Π½Π°ΡΡ‚оящСС врСмя прСдприятиС обСспСчиваСт свои потрСбности Π² Ρ‚Π°ΠΊΠΈΡ… Π²ΠΎΠ»ΠΎΠΊΠ½Π°Ρ…, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ качСства, объСмов, ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΠΈ поставок, увСличСния тСхнологичСских возмоТностСй производства Π½Π΅Ρ‚ΠΊΠ°Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ОАО «ΠšΠΎΠΌΠΈΡ‚Скс» стало ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… поставщиков синтСтичСских Π²ΠΎΠ»ΠΎΠΊΠΎΠ½ России для Π½ΡƒΠΆΠ΄ Ρ‚Π΅ΠΊΡΡ‚ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ.

Π‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ΅ финансовоС ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ опрСдСляСтся Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½Ρ‹ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ объСма производства, ростом ΠΏΡ€ΠΎΠ΄Π°ΠΆ ΠΈ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ.

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

Π’ Π½Π°ΡΡ‚оящСС врСмя ассортимСнт прСдприятия состоит ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 50 Π²ΠΈΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ.

ОАО «ΠšΠΎΠΌΠΈΡ‚Скс» поставляСт свою ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΡŽ 700 потрСбитСлям Π² Π ΠΎΡΡΠΈΠΈ ΠΈ Π·Π° Π΅Π΅ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ. Π“ΠΈΠ±ΠΊΠΈΠΉ производствСнный процСсс ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ высококвалифицированных спСциалистов ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π² ΡΠΎΠΎΡ‚вСтствии с Ρ‚рСбованиями ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ. ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ корпоративная систСма планирования, ΡƒΡ‡Π΅Ρ‚Π° ΠΈ ΠΊΠΎΠ½Ρ‚роля Ρ€Π°Π±ΠΎΡ‚Ρ‹ прСдприятия обСспСчиваСт эффСктивноС использованиС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… рСсурсов, ускоряСт процСсс обслуТивания ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

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

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы развития ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ:

1979 ОснованиС компании.

1980 Выпуск основы для производства столовой ΠΊΠ»Π΅Π΅Π½ΠΊΠΈ.

1983 Компания — ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΠΉ Π² Π‘Π‘Π‘Π  поставщик Π½Π΅Ρ‚ΠΊΠ°Π½ΠΎΠΉ основы.

1985 Выпуск ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

1986 Выпуск тСрмоскрСплСнных ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

1991 Экспорт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ.

1993 Выпуск ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹Ρ… ΠΈ Ρ…ΠΎΠ»ΡΡ‚ΠΎΠΏΡ€ΠΎΡˆΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

1995 Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы управлСния ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ.

1997 РСализация стратСгии роста Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½ для Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ.

1997 Выпуск Π»ΠΈΠ½ΠΎΠ»Π΅ΡƒΠΌΠ° Π½Π° Π½Π΅Ρ‚ΠΊΠ°Π½ΠΎΠΉ основС.

1999 РСализация инвСстиционной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ производства.

2000 Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ производства ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

2001 Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ систСмы ΡˆΡ‚Ρ€ΠΈΡ…ΠΎΠ²ΠΎΠ³ΠΎ кодирования ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ.

2001 РСализация инвСстиционной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ производства ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

2002 РСализация инвСстиционной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ производства.

2002 Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π° систСма качСства Π½Π° ΡΠΎΠΎΡ‚вСтствиС трСбованиям ΠœΠ‘ ISO 9001:2000.

2003 Выпуск ΠΏΠΎΠ»ΠΈΠΏΡ€ΠΎΠΏΠΈΠ»Π΅Π½ΠΎΠ²ΠΎΠ³ΠΎ Π²ΠΎΠ»ΠΎΠΊΠ½Π°.

2004 РСализация инвСстиционного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ мощностСй прСдприятия ΠΏΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΡƒ ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

2005 Выпуск полиэфирного Π²ΠΎΠ»ΠΎΠΊΠ½Π°.

2006 Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ мощностСй ΠΏΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΡƒ ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

2006;2008 ΠŸΠΎΡΡ‚Π°ΠΏΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ мощностСй прСдприятия ΠΏΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΡƒ полиэфирного Π²ΠΎΠ»ΠΎΠΊΠ½Π°.

2008 Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ мощностСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΡƒ ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ… ΠΈ ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ…-тСрмоскрСплСнных ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

2009 Компания становится ΠΎΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹ΠΌ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ России ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡ‚Π²Ρƒ синтСтичСских Π²ΠΎΠ»ΠΎΠΊΠΎΠ½.

2010 Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ объСмов выпуска ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ассортимСнта Π½Π΅Ρ‚ΠΊΠ°Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² для Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΎΡΡ‚ΠΈ.

2011 Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ мощностСй ΠΏΠΎ Π²Ρ‹ΠΏΡƒΡΠΊΡƒ ΠΈΠ³Π»ΠΎΠΏΡ€ΠΎΠ±ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΠ»ΠΎΡ‚Π΅Π½.

1.2 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с Π±ΠΎΠ»ΡŒΡˆΠΈΠΌΠΈ объСмами ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (списки поставщиков, ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ…, ассортимСнт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ, списки сотрудников) ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ массивы Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ — это довольно большиС Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ошибок.

ИмСнно для этой Ρ†Π΅Π»ΠΈ ΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° Π·Π°Π΄Π°Ρ‡Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ срСдство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сортировку Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов тСкстовых Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ поиск Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

2. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ свСдСния ΠΏΡ€ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹

сортировки ΠΈ ΠΏΠΎΠΈΡΠΊΠ°

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

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ начинаСтся с ΠΏΠΎΠΈΡΠΊΠ° наимСньшСго элСмСнта Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΅Π³ΠΎ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом (Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, наимСньший элСмСнт помСщаСтся Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΠΎΡ‚сортированном спискС). Π—Π°Ρ‚Π΅ΠΌ сканируСтся список, начиная со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта, Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ… наимСньшСго срСди ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ ΠΏ — 1 элСмСнтов ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ наимСньший элСмСнт обмСниваСтся со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ, Ρ‚. Π΅. Π²Ρ‚ΠΎΡ€ΠΎΠΉ наимСньший элСмСнт помСщаСтся Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² ΠΎΡ‚сортированном спискС.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС, ΠΏΡ€ΠΈ i-ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡƒ (0 i ΠΏ — 2) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΡ‰Π΅Ρ‚ наимСньший элСмСнт срСди послСдних ΠΏ — i ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ с Ai;

ПослС выполнСния ΠΏ — 1 ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² список оказываСтся отсортирован. Π’ΠΎΡ‚ псСвдокод Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для простоты прСдполагаСтся, Ρ‡Ρ‚ΠΎ список Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ массива.

Алгоритм SelectionSort (A[0.n — 1])

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π²Ρ‹Π±ΠΎΡ€Π°

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.n — 1] упорядочиваСмых элСмСнтов

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив A[0.n — 1], отсортированный

// Π² Π½Π΅ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС

for i = 0 to n — 2 do

min = i

for j = i + 1 to n — 1 do

if A[j] < A[min]

min = j

ОбмСн A[i] и A[min]

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π° Ρ€ΠΈΡ. 2.1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° сортировка Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ списка: 89, 45, 68, 90, 29, 34, 17.

Рис. 2.1. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ списка 89, 45, 68, 90, 29, 34, 17

ΠŸΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²Π°Ρ сортировка:

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

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ псСвдокод Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Алгоритм BubbleSort (A[0.n — 1])

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировкой

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.n — 1] упорядочиваСмых элСмСнтов

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив A[0.n — 1], отсортированный

// Π² Π½Π΅ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС

for i = 0 to n — 2 do

for j = 0 + 1 to n — 2 — i do

if A[j + 1] < A[j]

ОбмСн A[j] и A[j + 1]

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ описываСмого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΊ ΡΠΏΠΈΡΠΊΡƒ 89, 45, 68, 90, 29, 34, 17 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 2.2.

Рис. 2.2. Π”Π²Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π° ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировки списка 89, 45, 68, 90, 29, 34, 17

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

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ΅ массива А[0.n-1]. БлСдуя ΠΈΠ΄Π΅Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ сортировка массива А[0.n-2], ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ΅Π½Π° ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ся отсортированный массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ n-1: А[0] … А[n-2]. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° для получСния Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ исходной Π·Π°Π΄Π°Ρ‡ΠΈ, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ элСмСнта А[n-1]? ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, всС, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, — это Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ срСди отсортированных элСмСнтов ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° элСмСнт А[n — 1].

Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ способ: сканируСтся отсортированный подмассив слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΡΡ‚игаСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, больший ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ΠΉ А[n-1], ΠΈ ΠΏΠΎΡΠ»Π΅ этого осущСствляСтся вставка нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹ΠΌ элСмСнтом.

Π₯отя сортировка вставкой основана Π½Π° Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, Π±ΠΎΠ»Π΅Π΅ эффСктивной Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ снизу Π²Π²Π΅Ρ€Ρ…, Ρ‚. Π΅. итСративная. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ А[i] (начиная с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π° А[1] ΠΈ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ А[n-1]) вставляСтся Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ мСсто срСди ΠΏΠ΅Ρ€Π²Ρ‹Ρ… i ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² массива (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ ΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΡƒΠΆΠ΅ отсортированы). Однако Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ элСмСнт Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС вставляСтся Π½Π΅ Π² ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ отсортированном массивС.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ псСвдокод Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Алгоритм Insertions’ort (А [0.n-1])

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сортировки вставкой

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.n -1] ΠΈΠ· ΠΏ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ…

// элСмСнтов

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.n — 1], отсортированный

// Π² Π½Π΅ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС

for i = 1 to n — 1 do

v = A[i]

j = i — 1

while j 0 and A[j] > v do

A[j + 1] = A[j]

j = j — 1

A[j + 1] = v

Π Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° Ρ€ΠΈΡ. 2.3.

Рис. 2.3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки вставкой Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° подсчСтом:

ИдСя Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта сортируСмого списка ΠΎΠ±Ρ‰Π΅Π΅ количСство элСмСнтов, ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ, ΠΈ Π·Π°Π½Π΅ΡΡ‚ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ числа ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ элСмСнтов Π² ΠΎΡ‚сортированном спискС: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта это количСство Ρ€Π°Π²Π½ΠΎ 10, Ρ‚ΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π½Π°Π΄Ρ†Π°Ρ‚Ρ‹ΠΌ (Π΅Π³ΠΎ индСкс Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 10, Ссли индСксы Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0) Π² ΠΎΡ‚сортированном массивС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ список, просто копируя Π΅Π³ΠΎ элСмСнты Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Π½ΠΎΠ²ΠΎΠΌ, отсортированном спискС. Π’Π°ΠΊΠΎΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ называСтся сортировкой подсчСтом сравнСний (comparison counting) (рис. 2.4).

Рис. 2.4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки подсчСтом сравнСний ПсСвдокод Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Алгоритм ComparisonCountingSort (А [0.n — 1])

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива подсчСтом сравнСний

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.n — 1] упорядочиваСмых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив S[0.n — 1] элСмСнтов А,

// отсортированных Π² Π½Π΅ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС

for i = 0 to n — 1 do

Count[i] = 0

for i = 0 to n — 2 do

for j = i + 1 to n — 1 do

if A[i] < A[j]

Count[j] = Count[j] + 1

Else

Count[i] = Count[i] + 1

for i = 0 to n — 1 do

S[Count[i]] = A[i]

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

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π¨Π΅Π»Π»Π° — Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировки, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ сортировки вставками. ИдСя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π¨Π΅Π»Π»Π° состоит Π² ΡΡ€Π°Π²Π½Π΅Π½ΠΈΠΈ элСмСнтов, стоящих Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ рядом, Π½ΠΎ ΠΈ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ расстоянии Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π˜Π½Ρ‹ΠΌΠΈ словами — это сортировка вставками с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ «Π³Ρ€ΡƒΠ±Ρ‹ΠΌΠΈ» ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°ΠΌΠΈ. Аналогичный ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ сортировки называСтся сортировка расчёской.

ΠŸΡ€ΠΈ сортировкС Π¨Π΅Π»Π»Π° сначала ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ собой значСния, отстоящиС ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ расстоянии d. ПослС этого ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° повторяСтся для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ d, Π° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ся сортировка Π¨Π΅Π»Π»Π° упорядочиваниСм элСмСнтов ΠΏΡ€ΠΈ d=1 (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ сортировкой вставками). Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ сортировки Π¨Π΅Π»Π»Π° Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… случаях обСспСчиваСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ элСмСнты «Π±Ρ‹ΡΡ‚Ρ€Π΅Π΅» Π²ΡΡ‚Π°ΡŽΡ‚ Π½Π° ΡΠ²ΠΎΠΈ мСста (Π² ΠΏΡ€ΠΎΡΡ‚Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… сортировки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²ΠΎΠΉ, каТдая пСрСстановка Π΄Π²ΡƒΡ… элСмСнтов ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство инвСрсий Π² ΡΠΏΠΈΡΠΊΠ΅ максимум Π½Π° 1, Π° ΠΏΡ€ΠΈ сортировкС Π¨Π΅Π»Π»Π° это число ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС).

Π Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° Ρ€ΠΈΡ. 2.5.

Рис. 2.5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сортировки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π¨Π΅Π»Π»Π° ПсСвдокод Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Алгоритм ShellSort (А [0.n — 1])

// Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива подсчСтом Π¨Π΅Π»Π»Π°

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.n — 1] упорядочиваСмых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.n — 1] элСмСнтов отсортированных

// Π² Π½Π΅ΡƒΠ±Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ порядкС

d = n

while d > 1

d = d / 2

i = 0

while (j = i + d) < n

if А[i] > А[j]

обмСн А[i] и А[j]

i++

Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сортировки ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ ΠΈΠ»ΠΈ сортировки вставками ΠΈΠ»ΠΈ сортировки Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск:

Π­Ρ‚ΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ просто ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ сравниваСт элСмСнты Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ списка с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ поиска Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ элСмСнт с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π° (ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ поиск) ΠΈΠ»ΠΈ вСсь список Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ (Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΉ поиск). Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ примСняСтся простой Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ: Ссли Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ поиска Π² ΠΊΠΎΠ½Π΅Ρ† списка, Ρ‚ΠΎ ΠΏΠΎΠΈΡΠΊ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ списка Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ псСвдокод Ρ‚Π°ΠΊΠΎΠΉ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ вСрсии; прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄ массива.

Алгоритм SequentialSearch2 (А[0.n], К)

// Алгоритм Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ

// ΠΊΠ»ΡŽΡ‡Π° поиска Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ограничитСля

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив, А ΠΈΠ· ΠΏ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΊΠ»ΡŽΡ‡ поиска К

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива A[0.n — 1],

// Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ совпадаСт с К; Ссли элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½,

// возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1

А[п] = К

i = 0

while А[i] K

i = i + 1

if i < ΠΏ

return i

else

return -1

Если исходный список отсортирован, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ: поиск Π² Ρ‚Π°ΠΊΠΎΠΌ спискС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ встрСтится элСмСнт, Π½Π΅ ΠΌΠ΅Π½ΡŒΡˆΠΈΠΉ ΠΊΠ»ΡŽΡ‡Π° поиска.

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск:

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск прСдставляСт собой Π² Π²Ρ‹ΡΡˆΠ΅ΠΉ стСпСни эффСктивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для поиска Π² ΠΎΡ‚сортированном массивС. Он Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡƒΡ‚Π΅ΠΌ сравнСния искомого ΠΊΠ»ΡŽΡ‡Π° К ΡΠΎ ΡΡ€Π΅Π΄Π½ΠΈΠΌ элСмСнтом массива А[m]. Если ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ‚Π° ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ рСкурсивно повторяСтся для ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ массива, Ссли К < А[m], ΠΈ Π΄Π»Ρ Π²Ρ‚ΠΎΡ€ΠΎΠΉ, Ссли К > А [m].

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΊΠ»ΡŽΡ‡ К = 70, примСняя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.6

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сортировка ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ поиск Рис. 2.6. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска Π₯отя ясно, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск основан Π½Π° Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠΈ, Π΅Π³ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ нСрСкурсивный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π’ΠΎΡ‚ псСвдокод нСрСкурсивной вСрсии ΠΠ›Π“ΠžΠ Π˜Π’Πœ Binary Search (А[0.ΠΏ — 1], К)

// Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ нСрСкурсивный Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: Массив А[0.ΠΏ — 1], отсортированный

// Π² Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°ΡŽΡ‰Π΅ΠΌ порядкС, ΠΈ ΠΈΡΠΊΠΎΠΌΡ‹ΠΉ ΠΊΠ»ΡŽΡ‡ К

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: ИндСкс элСмСнта массива, Ρ€Π°Π²Π½ΠΎΠ³ΠΎ К,

// ΠΈΠ»ΠΈ -1, Ссли Ρ‚Π°ΠΊΠΎΠ³ΠΎ элСмСнта Π½Π΅Ρ‚

l = 0;

r = n — 1

while l r do

Ρ‚ = ;

if К = А[Ρ‚]

return m

else if К < А[Ρ‚]

r = m — 1

else

r = m + 1

return -1

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ способ Π°Π½Π°Π»ΠΈΠ·Π° эффСктивности Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска состоит Π² ΠΏΠΎΠ΄ΡΡ‡Π΅Ρ‚Π΅ количСства сравнСний искомого ΠΊΠ»ΡŽΡ‡Π° с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ массива. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ· ΡΠΎΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ простоты, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Π΅ сравнСния, Ρ‚. Π΅. Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ сравнСниС К ΠΈ А[m] позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, мСньшС Π»ΠΈ К, большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ А[m].

Бколько ΠΆΠ΅ сравнСний Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΈ поискС Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠ· n ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ²? ΠžΡ‚Π²Π΅Ρ‚, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, зависит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ n, Π½ΠΎ ΠΈ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ экзСмпляра Π·Π°Π΄Π°Ρ‡ΠΈ. НайдСм количСство сравнСний Π² Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС. Π’ Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠΈΠΉ случай входят всС массивы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ искомого ΠΊΠ»ΡŽΡ‡Π° (ΠΊΡ€ΠΎΠΌΠ΅ Π½ΠΈΡ… Π² ΡΡ‚ΠΎΡ‚ разряд ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ массивы, поиск Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ).

Π’ Ρ‡Π°ΡΡ‚ности, потрСбуСтся Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ 10 Ρ‚Ρ€ΠΎΠΉΠ½Ρ‹Ρ… сравнСний для поиска элСмСнта с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (ΠΈΠ»ΠΈ выяснСния Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ элСмСнт отсутствуСт) Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ ΠΈΠ· 1000 элСмСнтов, ΠΈ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 20 сравнСний для поиска Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ элСмСнтов.

Поиск подстроки:

ОписаниС Π·Π°Π΄Π°Ρ‡ΠΈ поиска подстроки: Π΄Π°Π½Π° символьная строка Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΏ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‰Π°ΡΡΡ тСкстом, ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠ° Π΄Π»ΠΈΠ½ΠΎΠΉ Ρ‚ (Ρ‚ ΠΏ). имСнуСмая шаблоном (pattern); трСбуСтся Π½Π°ΠΉΡ‚ΠΈ Π² Ρ‚СкстС подстроку, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Говоря Ρ‚ΠΎΡ‡Π½Π΅Π΅, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ i — индСкс ΠΊΡ€Π°ΠΉΠ½Π΅Π³ΠΎ слСва символа ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ подстроки Π² Ρ‚СкстС.

Если трСбуСтся Π½Π°ΠΉΡ‚ΠΈ всС Ρ‚Π°ΠΊΠΈΠ΅ подстроки, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска подстроки ΠΌΠΎΠΆΠ΅Ρ‚ просто ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ тСкста.

Алгоритм, основанный Π½Π° Π³Ρ€ΡƒΠ±ΠΎΠΉ силС, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½: шаблон выравниваСтся с Π½Π°Ρ‡Π°Π»ΠΎΠΌ тСкста ΠΈ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ символов слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Π»ΠΈΠ±ΠΎ символы Π²ΠΎ Π²ΡΠ΅Ρ… Ρ‚ ΠΏΠ°Ρ€Π°Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π²Π½Ρ‹ (Π² ΡΡ‚ΠΎΠΌ случаС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ), Π»ΠΈΠ±ΠΎ Π½Π΅ Π²ΡΡ‚рСчаСтся ΠΏΠ°Ρ€Π° Ρ€Π°Π·Π½Ρ‹Ρ… символов. Π’ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ случаС шаблон смСщаСтся Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²ΠΏΡ€Π°Π²ΠΎ, ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ символов продолТаСтся, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа шаблона ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Ρ‚СкстС. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ послСдняя позиция Π² Ρ‚СкстС, которая Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π² Ρ€ΠΎΠ»ΠΈ Π½Π°Ρ‡Π°Π»Π° искомой подстроки — ΠΏ — Ρ‚ (Ссли ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Ρ‚СкстС ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ значСниями ΠΎΡ‚ 0 Π΄ΠΎ ΠΏ — 1). ПослС этой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² Ρ‚СкстС остаСтся слишком ΠΌΠ°Π»ΠΎ символов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎ Π΄ΠΎΡΡ‚ΠΈΠΆΠ΅Π½ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… сравнСний.

Алгоритм BruteForceStriny Match (Π’[0.ΠΏ — 1], Π [0.Ρ‚ — 1])

// Алгоритм Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ поиск подстроки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π³Ρ€ΡƒΠ±ΠΎΠΉ силы

// Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: массив Π’[0.ΠΏ — 1] ΠΈΠ· ΠΏ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ

// тСкст; массив P[0.m — 1] ΠΈΠ· Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ шаблон

// Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅: позиция ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа Π² Ρ‚СкстС, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ

// начинаСтся пСрвая искомая подстрока, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ;

// Ссли подстрока Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°, возвращаСтся — 1

for i = 0 to ΠΏ — Ρ‚ do

j = 0

while j < Ρ‚ and P[j] = Π’[i + j] do

j = j + 1

if j = m

return i

return — 1

Π Π°Π±ΠΎΡ‚Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° Ρ€ΠΈΡ. 2.7.

Рис. 2.7. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ поиска подстроки с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π³Ρ€ΡƒΠ±ΠΎΠΉ силы ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ практичСски всСгда смСщаСт шаблон послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΆΠ΅ сравнСния символа. Однако Π½Π°ΠΈΡ…ΡƒΠ΄ΡˆΠΈΠΉ случай Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ нСприятнСС: Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС m ΡΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ сдвигом шаблона, ΠΈ ΡΡ‚ΠΎ происходит Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΏ — m + 1 ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ. Однако Π² ΡΠ»ΡƒΡ‡Π°Π΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎΠ³ΠΎ поиска слова Π² Ρ‚СкстС Π½Π° Π΅ΡΡ‚СствСнном языкС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ сдвигов Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ послС нСбольшого количСства сравнСний (взглянитС Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² ΡΡ€Π΅Π΄Π½Π΅ΠΌ случаС Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ сущСствСнно Π²Ρ‹ΡˆΠ΅ эффСктивности Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС.

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства ΠΈ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

3.1 ОписаниС процСсса создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства Borland Delphi 7.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ всС дСйствия.

Для удобства Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΠΎΡ€ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Ρ‚Ρ€ΠΈ области (для Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, для Π²Ρ‹Π·ΠΎΠ²Π° дСйствий ΠΈ Π΄Π»Ρ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²). Для Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ раздСлСния областСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TGroupBox.

Для Π²Π²ΠΎΠ΄Π° исходных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π’Memo ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ TLabeledEdit.

Для Π²Ρ‹Π±ΠΎΡ€Π° дСйствий ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ TButton ΠΈ TCheckBox.

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° ΡΡ‚Π°ΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡ. 3.1. (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2).

Для массива, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… String — это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ сортировку ΠΈ ΠΏΠΎΠΈΡΠΊ строк.

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ всС ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅», ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ для ΠΏΠΎΠΊΠ°Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сортировки ΠΈ ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° шаблона поиска Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ нСдоступны. Для этого Π½Π° ΡΡ‚Π°ΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ установим ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡ‚Π²ΠΎ Enabled Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ эти ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ стали доступны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ввСсти Π² Π»Π΅Π²ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅».

Π’ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ прСдусмотрим ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π±Ρ‹Π»ΠΎ Π½Π΅ ΠΏΡƒΡΡ‚Ρ‹ΠΌ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ:

if Memo1. Text <> '' then

begin

end

else

MessageDlg ('НС ввСдСн список!', mtWarning, [mbOK], 0);

Если ΠΆΠ΅ ΠΏΠΎΠ»Π΅ нСпустоС, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ считываниС Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ массив ΠΈ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌ всС элСмСнты. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°:

for i := 1 to Memo1.Lines.Count do

mas[i] := Memo1. Lines[i-1];

kol := Memo1.Lines.Count;

Button2.Enabled := true;

Button3.Enabled := true;

Button4.Enabled := true;

Button5.Enabled := true;

Button6.Enabled := true;

Button7.Enabled := true;

Button8.Enabled := true;

Button9.Enabled := true;

LE_Shablon.Enabled := true;

CheckBox1.Enabled := true;

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ всСх ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для сортировки, ΠΈΠΌΠ΅ΡŽΡ‚ практичСски ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΡƒΡŽ структуру, которая отличаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки. Випичная структура ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅:

QueryPerformanceFrequency (iCounterPerSec);

QueryPerformanceCounter (T1);

// рСализация ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки

QueryPerformanceCounter (T2);

if CheckBox1. Checked = true then

MessageDlg ('ВрСмя сортировки ' + FormatFloat ('0.0', (T2 — T1) / iCounterPerSec) + ' сСк.', mtInformation, [mbOK], 0);

Memo2.Lines.Clear;

for i := 1 to kol do

Memo2.Lines.Add (mas[i]);

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ прСдусмотрСна Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ врСмя, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° сортировка. Для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ QueryPerformanceFrequency ΠΈ QueryPerformanceCounter ΠΈ Ρ„ункция MessageDlg, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ эти Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° ΡΠΊΡ€Π°Π½ (Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ поставил ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π³Π°Π»ΠΎΡ‡ΠΊΡƒ).

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки (сортировка вставками):

for i:=1 to kol do

begin

temp := mas[i];

j := i-1;

while (j >= 0) and (mas[j] > temp) do

begin

mas[j+1] := mas[j];

j := j-1

end;

mas[j+1] := temp;

end;

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² поиска ΠΎΡ‚Π»ΠΈΡ‡Π½Π° Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°, поэтому рассмотрим ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ поискС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π»Π΅Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹, прСдусмотрСны ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ списка ΠΈ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° поиска:

if Memo1. Text <> '' then

else

MessageDlg ('НС ввСдСн список!', mtWarning, [mbOK], 0);

if LE_Shablon.Text = '' then

MessageDlg ('НС задан шаблон поиска', mtWarning, [mbOK], 0)

Π—Π°Ρ‚Π΅ΠΌ считываСтся шаблон ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся поиск. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

str := LE_Shablon.Text;

for i := 1 to kol do

if temp[i] = str then

break;

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поиска проводится ΠΏΡƒΡ‚Π΅ΠΌ сравнСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i ΠΈ Ρ‡ΠΈΡΠ»Π° строк Π² ΡΠΏΠΈΡΠΊΠ΅. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½, Ρ‚ΠΎ Π² Π»Π΅Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹ происходит Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ строки. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°:

if i <= kol then

begin

Memo1.SelStart := Memo1. Perform (EM_LINEINDEX, i-1, 0);

Memo1.SelLength := Length (Memo1.Lines[i-1]);

Memo1.SetFocus;

end

else

MessageDlg ('Π¨Π°Π±Π»ΠΎΠ½ поиска Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!', mtWarning,[mbOK], 0);

ΠŸΡ€ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ поискС Π²Π½Π°Ρ‡Π°Π»Π΅ производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ списка Π΄Π°Π½Π½Ρ‹Ρ…. Если список Π½Π΅ ΠΎΡ‚сортирован, Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся Π²Ρ‹Π²ΠΎΠ΄ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сообщСния. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°:

flag := true;

for i := 1 to kol-1 do

begin

if mas[i] > mas[i+1] then

begin

flag := false;

break;

end;

end;

if flag then

else

MessageDlg ('Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΎΡ‚сортированы! Поиск Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½!', mtWarning, [mbOK], 0);

Если ΠΆΠ΅ список отсортирован, Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся поиск:

str := LE_Shablon.Text;

low := 1;

high := kol;

found := false;

while (low <= high) and (not found) do

begin

mid := (low+high) div 2;

if str < mas[mid] then

high := mid-1

else if str > mas[mid] then

low := mid+1

else

found:=true;

end;

Для опрСдСлСния «ΡƒΠ΄Π°Ρ‡Π½ΠΎΡΡ‚ΠΈ» поиска ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΡƒΠ»Π΅Π²Π° пСрСмСнная found. Если ΠΎΠ½Π° Ρ€Π°Π²Π½Π° true — Π·Π½Π°Ρ‡ΠΈΡ‚ поиск ΡƒΠ΄Π°Ρ‡Π΅Π½. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС найдСнная строка выдСляСтся Π² ΠΏΡ€Π°Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈΠ½Π°Ρ‡Π΅ выводится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС:

if found then

begin

Memo2.SelStart := Memo2. Perform (EM_LINEINDEX, mid-1, 0);

Memo2.SelLength := Length (Memo2.Lines[mid-1]);

Memo2.SetFocus;

end

else

MessageDlg ('Π¨Π°Π±Π»ΠΎΠ½ поиска Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!', mtWarning,[mbOK], 0);

ΠŸΡ€ΠΈ поискС подстрок Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ производится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ списка Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠ»ΡŽΡ‡Π° поиска. Π—Π°Ρ‚Π΅ΠΌ выполняСтся сам поиск:

str := LE_Shablon.Text;

m := Length (str);

for k := 1 to kol do

begin

n := Length (temp[k]);

for i := 1 to n-m+1 do

begin

j := 0;

while (j < m) and (str[j+1] = temp[k, i+j]) do

inc (j);

if j = m then

begin

flag := true;

break;

end;

end;

if flag then

break;

Для опрСдСлСния «ΡƒΠ΄Π°Ρ‡Π½ΠΎΡΡ‚ΠΈ» поиска ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΡƒΠ»Π΅Π²Π° пСрСмСнная flag. Если ΠΎΠ½Π° Ρ€Π°Π²Π½Π° true — Π·Π½Π°Ρ‡ΠΈΡ‚ поиск ΡƒΠ΄Π°Ρ‡Π΅Π½. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС найдСнная строка выдСляСтся Π² ΠΏΡ€Π°Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹, ΠΈΠ½Π°Ρ‡Π΅ выводится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС:

if flag then

begin

Memo1.SelStart := Memo1. Perform (EM_LINEINDEX, k-1,0)+i-1;

Memo1.SelLength := m;

Memo1.SetFocus;

end

else

MessageDlg ('Π¨Π°Π±Π»ΠΎΠ½ поиска Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!', mtWarning,[mbOK], 0);

3.2 Руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ПослС запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΡΠΊΡ€Π°Π½Π΅ появляСтся главная Ρ„ΠΎΡ€ΠΌΠ°, которая ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Ρ€ΠΈΡ. 3.2. (ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3).

Данная Ρ„ΠΎΡ€ΠΌΠ° состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… частСй:

— ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для сортировки ΠΈΠ»ΠΈ поиска (располоТСна слСва),

— ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ всС ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… дСйствий Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ (располоТСна посСрСдинС),

— ΠΎΠ±Π»Π°ΡΡ‚ΡŒ для Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сортировки ΠΈΠ»ΠΈ поиска (располоТСна справа).

ΠžΠ±Π»Π°ΡΡ‚ΡŒ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных элСмСнтов:

— ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅»,

— ΠΏΠ°Π½Π΅Π»ΠΈ «Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…»,

— ΠΏΠ°Π½Π΅Π»ΠΈ «ΠŸΠΎΠΈΡΠΊ Π΄Π°Π½Π½Ρ‹Ρ…».

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π² Π»Π΅Π²ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для сортировки ΠΈΠ»ΠΈ поиска. НСобходимо ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, поэтому Ссли ввСсти числовыС Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сортировки Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ.

Π”Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ нСпосрСдствСнно Π² Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ скопированныС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ доступной являСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ° — «ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅». ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡŒ «ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя сортировки» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ нСдоступны.

ПослС Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅». Если ΠΏΡ€ΠΈ этом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π±Ρ‹Π» ввСсти Π΄Π°Π½Π½Ρ‹Π΅ Π² Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выдаст ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½Π° Ρ€ΠΈΡ 3.3.

Рис. 3.3. ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡ‚сутствии Π΄Π°Π½Π½Ρ‹Ρ… Если Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡ… ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Сля «ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя сортировки». Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 3.4.

ПослС этого Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ поиска Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ сортировки Π΄Π°Π½Π½Ρ‹Ρ….

НачнСм с ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки:

§ сортировку Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ;

§ сортировку ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠΌ;

§ сортировку вставками;

§ сортировку подсчСтом;

§ сортировку Π¨Π΅Π»Π»Π°.

Рис. 3.4. Главная Ρ„ΠΎΡ€ΠΌΠ° послС Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠŸΡ€ΠΈ сортировкС Π΄Π°Π½Π½Ρ‹Ρ… сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, сколько Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ заняла эта ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Для этого ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»Ρ «ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ врСмя сортировки», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ размСщаСтся Π² Π½ΠΈΠΆΠ½Π΅ΠΉ части ΠΏΠ°Π½Π΅Π»ΠΈ «Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…». Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½. ΠŸΡ€ΠΈ Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, нСзависимо ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ способа сортировки, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΡŽ сортировки Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСниС с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΡˆΠ»ΠΎ Π½Π° ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ сообщСния ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡ. 3.5.

Рис. 3.5. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ сортировки Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сортировки выводится Π² ΠΏΡ€Π°Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 3.6.

Рис. 3.6. Главная Ρ„ΠΎΡ€ΠΌΠ° с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ сортировки ΠŸΡ€ΠΈ нСобходимости ΠΌΠΎΠΆΠ½ΠΎ ввСсти Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ сортировки для Π½ΠΈΡ….

Если Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля Π΅ΡΡ‚ΡŒ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сортировки ΠΏΠΎ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ. Для этого Π΅ΠΌΡƒ Π½Π°Π΄ΠΎ нСсколько Ρ€Π°Π· ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. Однако слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΠΈ Π±ΠΎΠ»Π΅Π΅ использованиСм сортировки для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅».

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим поиск Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска:

Β· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск;

Β· Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск;

Β· поиск подстроки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π³Ρ€ΡƒΠ±ΠΎΠΉ силы.

Бпособ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ поиска (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠΈ) Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½, поэтому остановимся Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

1. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск.

Для Π΅Π³ΠΎ использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π² ΠΏΠΎΠ»Π΅ «Π¨Π°Π±Π»ΠΎΠ½ поиска» ΠΈΡΠΊΠΎΠΌΡƒΡŽ запись ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск».

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π±Ρ‹Π» ввСсти шаблон поиска, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС (рис. 3.7.)

Если шаблон поиска Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ поиск. ΠŸΡ€ΠΈ этом Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

Β· поиск Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅Π½ (шаблон Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½);

Β· поиск ΡƒΠ΄Π°Ρ‡Π΅Π½ (шаблон Π½Π°ΠΉΠ΄Π΅Π½).

Рис. 3.7. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡ‚сутствии шаблона поиска Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 3.8.

Рис. 3.8. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡ‚сутствии искомого значСния Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС искомая строка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π² Π»Π΅Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ поиска ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡ. 3.9.

2. Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск.

Для Π΅Π³ΠΎ использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π² ΠΏΠΎΠ»Π΅ «Π¨Π°Π±Π»ΠΎΠ½ поиска» ΠΈΡΠΊΠΎΠΌΡƒΡŽ запись ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск».

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π±Ρ‹Π» ввСсти шаблон поиска, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС (рис. 3.7.)

Если шаблон поиска Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ поиск.

Однако Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск (Π² ΡΠΈΠ»Ρƒ спСцифики Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отсортированными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ сортировки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ отсортирован Π»ΠΈ список, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ прСдполагаСтся ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ поиска.

Если Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ окаТСтся, Ρ‡Ρ‚ΠΎ список Π½Π΅ ΠΎΡ‚сортирован, Ρ‚ΠΎ ΠΎΠ± ΡΡ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, внСшний Π²ΠΈΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.10

Рис. 3.9. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска Рис. 3.10. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска Π² Π½Π΅ΠΎΡ‚сортированном спискС Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ поискС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

§ поиск Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅Π½ (шаблон Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½);

§ поиск ΡƒΠ΄Π°Ρ‡Π΅Π½ (шаблон Π½Π°ΠΉΠ΄Π΅Π½).

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 3.8.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС искомая строка Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π² ΠΏΡ€Π°Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ поиска ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡ. 3.11.

Рис. 3.11. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска

3. Поиск подстроки.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ способа поиска ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π΄Π°Π½Π½ΠΎΠΌ способС поиска ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΊΠ»ΡŽΡ‡Π° поиска ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ элСмСнта списка (ΠΏΡ€ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ поискС ΠΊΠ»ΡŽΡ‡ΠΎΠΌ являСтся вСсь элСмСнт списка). Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли поиск вСдСтся Π² ΡΠΏΠΈΡΠΊΠ΅ строк, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ поискС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΊΠ»ΡŽΡ‡Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ строку Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Π° ΠΏΡ€ΠΈ поискС подстроки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ строки (слово, полслова ΠΈ Ρ‚. Π΄.).

Для Π΅Π³ΠΎ использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти Π² ΠΏΠΎΠ»Π΅ «Π¨Π°Π±Π»ΠΎΠ½ поиска» ΠΈΡΠΊΠΎΠΌΡƒΡŽ подстроку ΠΈ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ «ΠŸΠΎΠΈΡΠΊ подстроки».

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π±Ρ‹Π» ввСсти шаблон поиска, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС (рис. 3.7.)

Если шаблон поиска Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ поиск.

Π’Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ рассмотрСнных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… поиска Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°:

— ΠΏΠΎΠΈΡΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅Π½ (шаблон Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½),

— ΠΏΠΎΠΈΡΠΊ ΡƒΠ΄Π°Ρ‡Π΅Π½ (шаблон Π½Π°ΠΉΠ΄Π΅Π½).

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡ. 3.8.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС искомая подстрока Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π² Π»Π΅Π²ΠΎΠΉ части Ρ„ΠΎΡ€ΠΌΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ поиска ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° Ρ€ΠΈΡ. 3.11.

Рис. 3.11. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠ³ΠΎ поиска подстроки

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Π»Π°Π²Π΅ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ исслСдованиС прСдприятия ΠΈ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ рассматриваСмого прСдприятия Π±Ρ‹Π»ΠΎ Π²Ρ‹Π±Ρ€Π°Π½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ Π°ΠΊΡ†ΠΈΠΎΠ½Π΅Ρ€Π½ΠΎΠ΅ общСство «ΠšΠΎΠΌΠΈΡ‚Π΅ΠΊΡ».

Π‘Ρ‹Π»ΠΈ рассмотрСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

1. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ развития прСдприятия ΠΈ ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Π΅ этапы Π΅Π³ΠΎ развития.

2. УкрупнСнная структура прСдприятия (ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°).

3. ЧлСнство прСдприятия Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ассоциациях.

4. ΠšΡ€Π°ΡΠΊΠΎΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π½Π° ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

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

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

Π‘Ρ€Π΅Π΄ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки Π±Ρ‹Π»ΠΈ рассмотрСны:

Β· сортировка Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ;

Β· ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΎΠ²Π°Ρ сортировка;

Β· сортировка вставкой;

Β· сортировка подсчСтом;

Β· сортировка Π¨Π΅Π»Π»Π°.

Π‘Ρ€Π΅Π΄ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² поиска Π±Ρ‹Π»ΠΈ рассмотрСны:

§ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск;

§ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск;

§ поиск подстроки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π³Ρ€ΡƒΠ±ΠΎΠΉ силы.

По ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π±Ρ‹Π»ΠΈ рассмотрСны:

ь ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ идСя Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ;

ь ΡΡƒΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°;

ь ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ псСвдокод Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°;

ь Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

ПослС рассмотрСния этих вопросов ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ нСпосрСдствСнно ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π±Ρ‹Π» Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° IDE (интСгрированная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ) Borland Delphi 7.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ Π³Π»Π°Π²Π΅ Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ расписан процСсс создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства.

Показана структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства, пСрСчислСны ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ»ΠΈΡΡŒ для создания интСрфСйса ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ срСдства. Π”Π°Π»Π΅Π΅ Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ исходныС Π΄Π°Π½Π½Ρ‹Π΅.

ПослС этого Π±Ρ‹Π»ΠΎ описана Π»ΠΎΠ³ΠΈΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π°:

— ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ исходных Π΄Π°Π½Π½Ρ‹Ρ…;

— ΠΊΠΎΠ΄ для считывания Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ массив ΠΈ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ элСмСнтов;

— ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для сортировки;

— ΠΊΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² сортировки (сортировка вставками);

— ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска;

— ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ для Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска;

— ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ для поиска подстрок.

Π—Π°Ρ‚Π΅ΠΌ Π±Ρ‹Π»ΠΎ создано руководство ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ для обучСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.

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

ΠŸΡ€ΠΈ этом рассмотрСны всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Π΅ дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ВсС поставлСнныС Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹.

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

1. Π›Π΅Π²ΠΈΡ‚ΠΈΠ½ Ананий. Алгоритмы: Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Π°Π½Π°Π»ΠΈΠ·. :ΠŸΠ΅Ρ€. с Π°Π½Π³Π». — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2006. — 576с.: ΠΈΠ».

2. Π“ΡƒΠ΄ΠΌΠ°Π½ Π‘., Π₯ΠΈΠ΄Π΅Ρ‚Π½ΠΈΠ΅ΠΌΠΈ Π‘.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². — Πœ.: ΠœΠΈΡ€, 1981.

3. Ахо А., Π₯Π»ΠΎΠΏΠΊΡ€ΠΎΡ„Ρ‚ Π”ΠΆ., Ульман Π”ΠΆ. ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΈ Π°Π½Π°Π»ΠΈΠ· Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². — Πœ.: ΠœΠΈΡ€. 1974.

4. Ахо A.B., Π₯ΠΎΠΏΠΊΡ€ΠΎΡ„Ρ‚ Π”. Π­., Ульман Π”. Π”. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. -М.: Π’ΠΈΠ»ΡŒΡΠΌΠ΅, 2000. 384с.

5. Π¦Π΅ΠΉΡ‚Π»ΠΈΠ½ Π“. Π•.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈΠΊΡƒ. КиСв: Π‘Ρ„Π΅Ρ€Π°, 1998. 473с.

6. ΠšΠ½ΡƒΡ‚ Π”. Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для Π­Π’Πœ. Π’. 1. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. — Πœ.: ΠœΠΈΡ€, 1976.

7. ΠšΠ½ΡƒΡ‚ Π”. Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования для Π­Π’Πœ. Π’. 3. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠΈΡΠΊ. — Πœ.: ΠœΠΈΡ€, 1978.

8. Π’ΠΈΡ€Ρ‚ Н. Алгоритмы ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. М.: ΠœΠΈΡ€, 1989. — 360с.

9. Π›ΠΎΡ€ΠΈΠ½ Π“. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΡ‹ сортировки. М.: Наука, 1983. — 384с.

10. Π¦Π΅ΠΉΡ‚Π»ΠΈΠ½ Π“. Π•. Алгоритмы Π°Π΄Π°ΠΏΡ‚ΠΈΠ²Π½ΠΎΠΉ сортировки ΠΈ ΠΈΡ… ΠΊΠ»Π°ΡΡΠΈΡ„икация. // ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ управлСния ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ 1995, № 3. Π‘. 95−103.

11. МакконнСлл Π”ΠΆ. Анализ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π’Π²ΠΎΠ΄Π½Ρ‹ΠΉ курс. М.: ВСхносфСра, 2002.-304с.

12. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ А. Π―. Object Pascal Π² Delphi. — Πœ: Π—ΠΠž? Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π‘Π˜ΠΠžΠœ, 2002.

13. Павловская Π’. А. Паскаль. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня: Π£Ρ‡Π΅Π±Π½ΠΈΠΊ для Π²ΡƒΠ·ΠΎΠ². — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2007. — 393с.

14. М. Π’. Π‘ΡƒΡ…Π°Ρ€Π΅Π² ΠžΡΠ½ΠΎΠ²Ρ‹ Delphi. ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. — Π‘Пб.: Наука ΠΈ Π’Π΅Ρ…Π½ΠΈΠΊΠ°, 2004. 600c.

15. Н. Π‘. ΠšΡƒΠ»ΡŒΡ‚ΠΈΠ½ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Turbo Pascal 7.0 ΠΈ Delphi — БПб.: BHV — Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ 1998 — 240с.

16. Π“Ρ€Ρ‹Π·Π»ΠΎΠ² Π’. И., Π“Ρ€Ρ‹Π·Π»ΠΎΠ²Π° Π’. П. Π’ΡƒΡ€Π±ΠΎ Паскаль 7.0 — М.: Π”ΠœΠš, 1998 — 400с.

17. Π–. ДТонс, К. Π–Π°Ρ€Ρ€ΠΎΡƒ РСшСниС Π·Π°Π΄Π°Ρ‡ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ TurboPascal. — Πœ., Ѐинансы ΠΈ ΡΡ‚атистика 1991 — 714с.

18. Delphi 5. Руководство программиста. — Πœ.: «ΠΠΎΠ»ΠΈΠ΄ΠΆ», 2001. — 880с

19. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ А. Π―. Delphi 7. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ пособиС, — М: Π—ΠΠž? Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π‘Π˜ΠΠžΠœ, 2003.

20. ΠšΡƒΠ»ΡŒΡ‚ΠΈΠ½ Н. Π‘. Delphi 6 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Object Pascal — БПб: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³ 2001 — 528с: ΠΈΠ».

21. ΠΡ€Ρ…Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΠΉ А. Π―. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования Π² Delph. ВСрсии 5−7. — Πœ: Π—ΠΠž? Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π‘Π˜ΠΠžΠœ?, 2003.

22. Π€Π»Π΅Π½ΠΎΠ² М. Π•. Библия Delphi. — Π‘Пб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2004. — 880с.:

23. Π“Ρ€ΠΈΠ½Π·ΠΎΡƒ Π›Ρƒ. Ѐилософия программирования для Windows 95/NT. ΠΏΠ΅Ρ€. Ρ Π°Π½Π³Π». — Π‘Пб.: Π‘ΠΈΠΌΠ²ΠΎΠ»-плюс, 1997. — 640с.

24 ВСйксСйра C, ΠŸΠ°Ρ‡Π΅ΠΊΠΎ К Borland Delphi 6. Руководство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2002. — 1120с.

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

ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

unit UnitMain;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, DateUtils, ExtCtrls;

type

TMainForm = class (TForm)

GroupBox3: TGroupBox;

Memo1: TMemo;

GroupBox4: TGroupBox;

Button1: TButton;

GroupBox1: TGroupBox;

Button2: TButton;

Button3: TButton;

Button4: TButton;

Button5: TButton;

Button6: TButton;

GroupBox2: TGroupBox;

Button7: TButton;

Button9: TButton;

Button8: TButton;

LE_Shablon: TLabeledEdit;

GroupBox5: TGroupBox;

Memo2: TMemo;

CheckBox1: TCheckBox;

procedure Button1Click (Sender: TObject);

procedure Button2Click (Sender: TObject);

procedure Button3Click (Sender: TObject);

procedure Button4Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button6Click (Sender: TObject);

procedure Button7Click (Sender: TObject);

procedure Button9Click (Sender: TObject);

procedure Button8Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

MainForm: TMainForm;

mas: array [0.1000] of String;

kol: integer;

iCounterPerSec: TLargeInteger;

T1, T2: TLargeInteger;

implementation

{$R *.dfm}

procedure TMainForm. Button1Click (Sender: TObject);

var

ttt, i: integer;

begin

if Memo1. Text <> '' then

begin

for i := 1 to Memo1.Lines.Count do

mas[i] := Memo1. Lines[i-1];

kol := Memo1.Lines.Count;

Button2.Enabled := true;

Button3.Enabled := true;

Button4.Enabled := true;

Button5.Enabled := true;

Button6.Enabled := true;

Button7.Enabled := true;

Button8.Enabled := true;

Button9.Enabled := true;

LE_Shablon.Enabled := true;

CheckBox1.Enabled := true;

end

else

MessageDlg ('НС ввСдСн список!', mtWarning, [mbOK], 0);

end;

procedure TMainForm. Button2Click (Sender: TObject);

var

i, j, min: integer;

temp: String;

begin

QueryPerformanceFrequency (iCounterPerSec);

QueryPerformanceCounter (T1);

for i := 1 to kol-1 do

begin

min := i;

for j := i+1 to kol do

if mas[j] < mas[min] then

min := j;

temp := mas[min];

mas[min] := mas[i];

mas[i] := temp;

end;

QueryPerformanceCounter (T2);

if CheckBox1. Checked = true then

MessageDlg ('ВрСмя сортировки ' + FormatFloat ('0.0', (T2 — T1) / iCounterPerSec) + ' сСк.', mtInformation, [mbOK], 0);

Memo2.Lines.Clear;

for i := 1 to kol do

Memo2.Lines.Add (mas[i]);

end;

procedure TMainForm. Button3Click (Sender: TObject);

var

i, j, min: integer;

temp: String;

begin

QueryPerformanceFrequency (iCounterPerSec);

QueryPerformanceCounter (T1);

for i := 1 to kol-1 do

for j := 1 to kol-i do

if mas[j+1] < mas[j] then

begin

temp := mas[j];

mas[j] := mas[j+1];

mas[j+1] := temp;

end;

QueryPerformanceCounter (T2);

if CheckBox1. Checked = true then

MessageDlg ('ВрСмя сортировки ' + FormatFloat ('0.0', (T2 — T1) / iCounterPerSec) + ' сСк.', mtInformation, [mbOK], 0);

Memo2.Lines.Clear;

for i := 1 to kol do

Memo2.Lines.Add (mas[i]);

end;

procedure TMainForm. Button4Click (Sender: TObject);

var

i, j, min: integer;

temp: String;

begin

QueryPerformanceFrequency (iCounterPerSec);

QueryPerformanceCounter (T1);

for i:=1 to kol do

begin

temp := mas[i];

j := i-1;

while (j >= 0) and (mas[j] > temp) do

begin

mas[j+1] := mas[j];

j := j-1

end;

mas[j+1] := temp;

end;

QueryPerformanceCounter (T2);

if CheckBox1. Checked = true then

MessageDlg ('ВрСмя сортировки ' + FormatFloat ('0.0', (T2 — T1) / iCounterPerSec) + ' сСк.', mtInformation, [mbOK], 0);

Memo2.Lines.Clear;

for i := 1 to kol do

Memo2.Lines.Add (mas[i]);

end;

procedure TMainForm. Button5Click (Sender: TObject);

var

i, j, min: integer;

temp: array [0.10 000] of String;

count: array [0.10 000] of integer;

begin

QueryPerformanceFrequency (iCounterPerSec);

QueryPerformanceCounter (T1);

for i := 1 to kol do

count[i] := 0;

for i := 1 to kol-1 do

begin

for j := i+1 to kol do

if mas[i] < mas[j] then

inc (count[j])

else

inc (count[i]);

end;

for i := 1 to kol do

temp[count[i]] := mas[i];

QueryPerformanceCounter (T2);

if CheckBox1. Checked = true then

MessageDlg ('ВрСмя сортировки ' + FormatFloat ('0.0', (T2 — T1) / iCounterPerSec) + ' сСк.', mtInformation, [mbOK], 0);

Memo2.Lines.Clear;

for i := 1 to kol do

begin

mas[i] := temp[i-1];

Memo2.Lines.Add (mas[i]);

end;

end;

procedure TMainForm. Button6Click (Sender: TObject);

var

d, i, j: integer;

h: word;

temp: String;

begin

QueryPerformanceFrequency (iCounterPerSec);

QueryPerformanceCounter (T1);

d := kol div 2;

while d > 0 do

begin

for i := 0 to kol-d do

begin

j := i;

while (j >= 0) and (mas[j] > mas[j+d]) do

begin

temp := mas[j];

mas[j]:= mas[j+d];

mas[j+d] := temp;

j:=j-d;

end;

end;

d := d div 2;

end;

QueryPerformanceCounter (T2);

if CheckBox1. Checked = true then

MessageDlg ('ВрСмя сортировки ' + FormatFloat ('0.0', (T2 — T1) / iCounterPerSec) + ' сСк.', mtInformation, [mbOK], 0);

Memo2.Lines.Clear;

for i := 1 to kol do

Memo2.Lines.Add (mas[i]);

end;

procedure TMainForm. Button7Click (Sender: TObject);

var

str: String;

i, line: integer;

temp: array [0.10 000] of String;

begin

if Memo1. Text <> '' then

begin

for i := 1 to Memo1.Lines.Count do

temp[i] := Memo1. Lines[i-1];

kol := Memo1.Lines.Count;

end

else

MessageDlg ('НС ввСдСн список!', mtWarning, [mbOK], 0);

if LE_Shablon.Text = '' then

MessageDlg ('НС задан шаблон поиска', mtWarning, [mbOK], 0)

else

begin

str := LE_Shablon.Text;

for i := 1 to kol do

if temp[i] = str then

break;

if i <= kol then

begin

Memo1.SelStart := Memo1. Perform (EM_LINEINDEX, i-1, 0);

Memo1.SelLength := Length (Memo1.Lines[i-1]);

Memo1.SetFocus;

end

else

MessageDlg ('Π¨Π°Π±Π»ΠΎΠ½ поиска Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!', mtWarning, [mbOK], 0);

end;

end;

procedure TMainForm. Button9Click (Sender: TObject);

var

low, high, mid, i: integer;

found, flag: boolean;

str: String;

begin

//ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ.

flag := true;

for i := 1 to kol-1 do

begin

if mas[i] > mas[i+1] then

begin

flag := false;

break;

end;

end;

if flag then

begin

if LE_Shablon.Text = '' then

MessageDlg ('НС задан шаблон поиска', mtWarning, [mbOK], 0)

else

begin

str := LE_Shablon.Text;

low := 1;

high := kol;

found := false;

while (low <= high) and (not found) do

begin

mid := (low+high) div 2;

if str < mas[mid] then

high := mid-1

else if str > mas[mid] then

low := mid+1

else

found:=true;

end;

if found then

begin

Memo2.SelStart := Memo2. Perform (EM_LINEINDEX, mid-1, 0);

Memo2.SelLength := Length (Memo2.Lines[mid-1]);

Memo2.SetFocus;

end

else

MessageDlg ('Π¨Π°Π±Π»ΠΎΠ½ поиска Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!', mtWarning, [mbOK], 0);

end;

end

else

MessageDlg ('Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΎΡ‚сортированы! Поиск Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½!', mtWarning, [mbOK], 0);

end;

procedure TMainForm. Button8Click (Sender: TObject);

var

str: String;

i, j, k, m, n, nom: integer;

temp: array [0.10 000] of String;

flag: boolean;

begin

flag := false;

if Memo1. Text <> '' then

begin

for i := 1 to Memo1.Lines.Count do

temp[i] := Memo1. Lines[i-1];

kol := Memo1.Lines.Count;

end

else

MessageDlg ('НС ввСдСн список!', mtWarning, [mbOK], 0);

if LE_Shablon.Text = '' then

MessageDlg ('НС задан шаблон поиска', mtWarning, [mbOK], 0)

Else

begin

str := LE_Shablon.Text;

m := Length (str);

for k := 1 to kol do

begin

n := Length (temp[k]);

for i := 1 to n-m+1 do

begin

j := 0;

while (j < m) and (str[j+1] = temp[k, i+j]) do

inc (j);

if j = m then

begin

flag := true;

break;

end;

end;

if flag then

break;

end;

if flag then

begin

Memo1.SelStart := Memo1. Perform (EM_LINEINDEX, k-1, 0) + i-1;

Memo1.SelLength := m;

Memo1.SetFocus;

end

else

MessageDlg ('Π¨Π°Π±Π»ΠΎΠ½ поиска Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!', mtWarning, [mbOK], 0);

end;

end;

end.

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

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠΈΡΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Рис. 3.1. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° ΡΡ‚Π°ΠΏΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 3

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠΎΠΈΡΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Рис. 3.2. Главная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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