快速排序法,最快的排序方法。 说明:对整形数组A进行排序procedure QSort(var A: array of Integer); procedure QuickSort(var A: array of Integer; iLo, iHi: Integer); var Lo, Hi, Mid, T: Integer; begin Lo := iLo; Hi := iHi; Mid := A[(Lo + Hi) div 2]; repeat while A[Lo] < Mid do Inc(Lo); while A[Hi] > Mid do Dec(Hi); if Lo <= Hi then begin VisualSwap(A[Lo], A[Hi], Lo, Hi); T := A[Lo]; A[Lo] := A[Hi]; A[Hi] := T; Inc(Lo); Dec(Hi); end; until Lo > Hi; if Hi > iLo then QuickSort(A, iLo, Hi); if Lo < iHi then QuickSort(A, Lo, iHi); if Terminated then Exit; end;begin QuickSort(A, Low(A), High(A)); end;
把你数组里的值读到一张表里XTableName 然后,select top 10 from XTableName oder by XFieldName Desc 就可以了,简单吧!(哈哈)
定义一个数组max【10】用来存放10个最大值;其中max【1】最大;max【10】最小
用循环处理;在发现有比max【10】更大的值;让该数值跟max【1】..max【9】进行重新排序;
说明:对整形数组A进行排序procedure QSort(var A: array of Integer); procedure QuickSort(var A: array of Integer; iLo, iHi: Integer);
var
Lo, Hi, Mid, T: Integer;
begin
Lo := iLo;
Hi := iHi;
Mid := A[(Lo + Hi) div 2];
repeat
while A[Lo] < Mid do Inc(Lo);
while A[Hi] > Mid do Dec(Hi);
if Lo <= Hi then
begin
VisualSwap(A[Lo], A[Hi], Lo, Hi);
T := A[Lo];
A[Lo] := A[Hi];
A[Hi] := T;
Inc(Lo);
Dec(Hi);
end;
until Lo > Hi;
if Hi > iLo then QuickSort(A, iLo, Hi);
if Lo < iHi then QuickSort(A, Lo, iHi);
if Terminated then Exit;
end;begin
QuickSort(A, Low(A), High(A));
end;
然后,select top 10 from XTableName oder by XFieldName Desc
就可以了,简单吧!(哈哈)
"认识了斧子,就觉得所有的问题都是钉子!",哈哈哈!
谢谢你对我的评价,其实这也是解决问题的一种方式,我们不一定都要落俗套!