关于算法的问题~~~请大家看看。 (1分)

  • 主题发起人 tiger_520
  • 开始时间
T

tiger_520

Unregistered / Unconfirmed
GUEST, unregistred user!
随机出一组数据:stringgrid1.cells[0,i]:=char(random(10)+ord('0'));
找出这组数据中最大的数字,请看下边代码:
for i:=0 to stringgrid1.rowcount-1 do
for j:=i+1 to stringgrid1.rowcount-1 do
begin
l:=strtoint(stringgrid1.cells[0,i]);
m:=strtoint(stringgrid1.cells[0,j]);
if m>=l then
begin
k:=m;
end
else
begin
k:=l
end;
end;
现在的问题是不能准确找出最大的数,请大家们都看看问题在那里?该如何改进。谢谢
 
老大,找出一个数组中的最大数好像用不着双重循环吧。

k:=-1;
for i:=0 to stringgrid1.rowcount-1 do
begin
m:=strtoint(stringgrid1.cells[0,i]);
if m>k then
k:=m
end;

看您的代码,似乎是从一个冒泡排序算法中硬搬过来的,但是,您忽视了一个事实:
冒泡排序使用了“元素交换”技术,而您的“k:=m;”或者“k:=l;”均没有改写数组元素
(您没有向stringgrid1.cells中写入排序后的结果)。
 
接受答案了.
 
顶部