关于IComarer 的问题
delphi吧
全部回复
仅看楼主
level 12
ayi033 楼主
{ TMyComparer }
function TMyComparer.Compare(const L, R: TMyRecord): Integer;
begin
Result := 0;
if (L.Y = R.Y) then // Exit; 当我直接退出的时候没有问题
{ begin //当我再进行判断的时候就溢出了 "stack overflow"
if L.X > R.X then Result := 1
else if L.Y < R.X then Result := -1;
Exit;
end;}
if L.Y > R.Y then Result := 1
else if l.Y < R.Y then Result := -1;
end;
这是我的比较函数,很奇怪.
2014年01月28日 03点01分 1
level 12
ayi033 楼主
TMyRecord = Record
I:Integer;
Y:Double;
X:Integer;
S:Array[0..20] of AnsiChar;
End;
@BambooCaep
2014年01月28日 03点01分 2
吧务
level 14
退出是对的。不然你的result永远是0。
2014年01月28日 05点01分 3
THKS
2014年01月28日 05点01分
level 12
ayi033 楼主
{ begin //当我再进行判断的时候就溢出了 "stack overflow"
if L.X > R.X then Result := 1
else if L.Y < R.X then Result := -1; //这里应该是L.X < R.X 这样就没问题了
Exit;
end;}
据说List排序也是用QuikSort, 应该是死循环了,不好意思, 自己的太大意了。
2014年01月28日 05点01分 4
2014年01月28日 05点01分
确实是用的quicksort,泛型版也是如此,有源码的。
2014年01月28日 09点01分
1