Намиране на минимален (максимален) елемент от масив в Delphi, Delphi, Delphi компоненти, източници

Намиране на минимален (максимален) елемент от масив в Delphi

Списък. Намиране на минимален елемент от масив

На фиг. 5.8 показва диалоговия прозорец на приложението след щракване върху бутона Търсене.

максимален

Търсене в масив за даден елемент: Двоичен метод за търсене

На практика доста често се извършва търсене в масив, чиито елементи са подредени по някакъв критерий (такива масиви се наричат ​​подредени). Например, масив от фамилни имена, като правило, се сортира по азбучен ред, масив от данни за времето се подрежда по дати на наблюдение. Ако масивът е подреден, тогава се използват други алгоритми, които са по-ефективни от простия метод на изброяване, един от които е методът на двоично търсене. Нека има масив от цели числа, сортирани във възходящ ред. Необходимо е да се определи дали този масив съдържа някакво число (извадка).

Методът (алгоритъмът) за двоично търсене се реализира по следния начин:

  1. Първо, извадката се сравнява със средния (по номер) елемент на масива (фиг. 5.10, а).
  • Ако пробата е равна на средния елемент, проблемът е решен.
  • Ако извадката е по-голяма от средния елемент, това означава, че желаният елемент се намира под средния елемент (между елементи с номера sred + i и niz), а sred + i се приема като нова стойност на глагола, а стойността на niz не се променя (фиг. 5.10, 6),
  • Ако извадката е по-малка от средния елемент, това означава, че желаният елемент се намира над средния елемент (между елементи с номера verh и sred-i), а sred-i се приема като нова стойност на niz и стойността на verh не се променя (фиг. 5.10, c).

намиране

намиране

2. След като се определи частта от масива, в която може да се намира желаният елемент, се изчислява новата стойност на сред по формулата (niz-verh) / 2 + verh итърсенето продължава.

Алгоритъмът за двоично търсене, чиято блокова схема е показана на фиг. 5.P, завършва, ако необходимият елемент бъде намерен или ако преди следващия цикъл на търсене се установи, че стойността на глагола е по-голяма от niz. Диалоговият прозорец на програмата Двоично търсене в масив е показан на фиг. 5.12. Полето Етикети се използва за показване на резултатите от търсенето и регистъра на търсенето. Регистърът на търсенето се показва, ако е поставена отметка в квадратчето Покажи регистрационния файл. Протоколът съдържа стойностите на променливите verh, niz, sred. Тази информация, която се показва по време на търсенето, е полезна за разбиране на същността на алгоритъма.

Във формуляра за кандидатстване се появи нов компонент, който не е бил използван в програмите до този момент - чекбокс (компонента CheckBox). Иконата на компонента CheckBox се намира в раздела Standard (фиг. 5.13). Добавя се към формуляра по същия начин като другите компоненти.

След като компонентът CheckBox се добави към формуляра и се добави по обичайния начин, трябва да зададете стойностите на неговите свойства в съответствие с таблицата. 5.6.

Листинг 5.8 показва манипулатора на събитие onclick за командния бутон за търсене (Buttoni). Процедурата въвежда стойностите на елементите на масива и шаблона, след което, използвайки алгоритъм за двоично търсене, проверява дали масивът съдържа елемент, равен на шаблона. В допълнение, променливата n (броят сравнения на шаблони) ви позволява да оцените ефективността на алгоритъма за двоично търсене в сравнение с търсенето чрез просто изброяване. При изчисляване на номера на средния елемент се използва функцията Trunc, която закръгля до най-близкото цяло число и преобразува израза, получен като аргумент, в целочислен тип. Необходимостта от използване на trunc се обяснява с факта, че изразът (niz-verh) /2 е от дробен тип, променливата sred е от целочислен тип ина променлива от целочислен тип не може да бъде присвоена дробна стойност (компилаторът ще издаде съобщение за грешка).

Обърнете внимание на процедурите за обработка на събитието OpenUrGeses за компонентите stringGridl и Edit.Първата от тях гарантира, че курсорът се премества в следващата клетка на таблицата или в полето Edit (от последната клетка) в резултат на натискане на клавиша, втората активира командния бутон Търсене също в резултат на натискане на клавиша.

Списък 5.8. Двоично търсене в масив