Поиск минимального (максимального) элемента массива, статистика элементов массива
01.01.2007
Vit
Задачу поиска минимального элемента массива рассмотрим на примере массива целых чисел.
Алгоритм поиска минимального (максимального) элемента массива довольно очевиден: сначала делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент становится минимальным (максимальным) и продолжается проверка оставшихся элементов.
Диалоговое окно приложения поиска минимального элемента массива содержит соответствующим образом настроенный компонент stringGridi, который применяется для ввода элементов массива, два поля меток (Label1 и Labeia), использующиеся для вывода информационного сообщения и результата работы программы, и командную кнопку (Buttonl), при щелчке на которой выполняется поиск минимального элемента массива. В табл. 5.4 приведены значения свойств компонента stringGridi.
| Свойство | Значение |
|---|---|
| ColCount | 005 |
| FixedCols | 000 |
| RowCount | 001 |
| DefaultRowHeight | 024 |
| Height | 024 |
| DefaultColWidth | 064 |
| Width | 328 |
| Options.goEditing | True |
| Options.AlwaysShowEditing | True |
| Options.goTabs | True |
В листинге 5.6 приведена процедура обработки события Onclick для командной кнопки Button1, которая вводит массив, выполняет поиск мини-мального элемента и выводит результат - номер и значение минимального элемента массива.
Листинг 5.6. Поиск минимального элемента массива
unit lookmin_;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
StringGridl: TStringGrid;
procedure ButtonlClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ButtonlClick(Sender: TObject);
const
SIZE = 5;
var
a: array[l..SIZE] of integer; // массив целых
min: integer; // номер минимального элемента массива
i: integer; // номер элемента, сравниваемого с минимальным
begin
// ввод массива for i:=1 to SIZE do
a[i] := StrToInt(StringGridl.Cells[i - 1, 0]);
// поиск минимального элемента
min := 1; // пусть первый элемент минимальный
for i := 2 to SIZE do
if a[i] < a[min] then
min := i;
// вывод результата
label2.caption := 'Минимальный элемент массива:'
+ IntToStr(a[min] + #13 + 'Номер элемента:' + IntToStr(min);
end;
end.
DelphiWorld 6.0
Примечание от Vit
боюсь что код приведенный выше представляет интерес для студентов и тех кто изучает алгоритмы програмирования, для тех же кто занимается практической деятельностью изобретать велосипед нет смысла, всё уже сделано до нас, осталосьт заглянуть в модуль Math от Delphi и найти в нём функции нахождения требуемых величин:
+---------------------------+-----------------------------------+
| Функция модуля Math | Описание |
+---------------------------+-----------------------------------+
| MaxIntValue | Returns the largest signed value |
| | in an integer array |
+---------------------------+-----------------------------------+
| MaxValue | Returns the largest signed value |
| | in an array |
+---------------------------+-----------------------------------+
| Mean | Returns the average of all values |
| | in an array |
+---------------------------+-----------------------------------+
| MeanAndStdDev | Calculates the mean and standard |
| | deviation of array elements |
+---------------------------+-----------------------------------+
| MinIntValue | Returns the smallest signed value |
| | in an integer array |
+---------------------------+-----------------------------------+
| MinValue | Returns smallest signed value in |
| | an array |
+---------------------------+-----------------------------------+
| MomentSkewKurtosis | Calculates the mean, variance, |
| | skew, and kurtosis |
+---------------------------+-----------------------------------+
| Norm | Returns the Euclidean \'L-2\' |
| | norm. |
+---------------------------+-----------------------------------+
| PopnStdDev | Calculates the population |
| | standard deviation |
+---------------------------+-----------------------------------+
| PopnVariance | Calculates the population |
| | variance |
+---------------------------+-----------------------------------+
| StdDev | Returns the sample standard |
| | deviation for elements in an |
| | array. |
+---------------------------+-----------------------------------+
| Sum | Returns the sum of the elements |
| | in an array. |
+---------------------------+-----------------------------------+
| SumInt | Returns the sum of the elements |
| | in an integer array. |
+---------------------------+-----------------------------------+
| SumOfSquares | Returns the sum of the squared |
| | values from a data array. |
+---------------------------+-----------------------------------+
| SumsAndSquares | Returns the sum of the values and |
| | the sum of the squared values in |
| | an array. |
+---------------------------+-----------------------------------+
| TotalVariance | Returns the statistical variance |
| | from an array of values. |
+---------------------------+-----------------------------------+
| Variance | Calculates statistical sample |
| | variance from an array of data. |
+---------------------------+-----------------------------------+
Впрочем, тем, кто изучает алгоритмику, неплохо было бы взглянуть на исходники этого модуля Math, где и найти реализацию приведенных функций.

