在一数组中求最大值和最小值(100分)

  • 主题发起人 主题发起人 hnldtz
  • 开始时间 开始时间
H

hnldtz

Unregistered / Unconfirmed
GUEST, unregistred user!
在一数组中求最大值和最小值
如:在数组a,b,c,d,e,f中求出最大和最小值。
 
全部遍列一次,没什么好方法。
 
如果是字符串数组,可以考虑用TStringList,它有个Sorted属性,
为True是它自己会排序。
 
晕了。我说我delphi初出茅庐,看来我真的改变一下看法了,我是菜鸟,你是没有入门

//求最大值
function ArrayMax(StrArray : array of Integer):Integer;
var
i , k : Integer;
begin
Result:= strArray[0];
for i:= Low(strArray) to High(strArray) do
begin
if(strArray[0] > strArray) then
k:= strArray[0]
else
k:= strArray
end;
Result:= k;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=IntToStr(ArrayMax([70, 6 , 100])) //常量数组一定要用中括号括起来
end;编译通过的,可以直接用。。。找本数据结构的书看看,这跟delphi没有关系,只是个简单的排序算法。。。最小值你自己写
 
方法一:
字符用ASCAII码值区分,这里就不说了。
var
strchar : char;
begin
ord(a) 去和ord(b),ord(c),ord(d),ord(e)一个个比较
end;
方法二:
楼上说的方法
用字符串列表:
var
strList : Tstringlist;
strList:= Tstringlist.create;
strList .Sorted取排序
不写了,太简单的问题。。。。。。。。。。。。。。。。。。。。。
 
晕了。以下方法能求出最大值??用([70, 6 , 100, 80, 90, 85])) 来测试看看.

//求最大值
function ArrayMax(StrArray : array of Integer):Integer;
var
i , k : Integer;
begin
Result:= strArray[0];
for i:= Low(strArray) to High(strArray) do
begin
if(strArray[0] > strArray) then
k:= strArray[0]
else
k:= strArray
end;
Result:= k;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=IntToStr(ArrayMax([70, 6 , 100])) //常量数组一定要用中括号括起来
end;
 
加入Math单元:
求最大值 Math.MaxIntValue()
求最小值 Math.MinIntValue()
 
type
TMAXANDMIN = record
Max:LongWord;
Min:LongWord;
end;

Function MaxAndMin(LongArr:Array of LongWord):TMAXANDMIN;
var i:Integer;
begin
ResUlt.Max := LongArr[0];
ResUlt.Min := LongArr[0];
for i := Low(LongArr) to High(LongArr) do
begin
if ResUlt.Max < LongArr then
ResUlt.Max := LongArr;
if ResUlt.Min > LongArr then
ResUlt.Min := LongArr;
end;
end;

var _MaxAndMin:TMAXANDMIN;
begin
_MaxAndMin := MaxAndMin([10,20,100,50,60,15]);
ShowMessage(Format('最大值是:%u - 最小值是:%u',[_MaxAndMin.Max,_MaxAndMin.Min]));
end;
 
楼上的真不错,用一个记录就把所求值都计算出来了.
 
強人挺多的。
 
xiaopei。写得好。短小精悍,考虑周全。佩服。。。。。
 
接受答案了.
 
后退
顶部