大家好,新手请教一个问题。(10分)

  • 主题发起人 每天学习一点
  • 开始时间

每天学习一点

Unregistered / Unconfirmed
GUEST, unregistred user!
我刚学编程,正在学着写排序方面的过程和函数,今天看到一道题,我想请高手给做个示范。写段代码:
要求:实现 1,3,2,8,5,6,10,4,7,9(1-10的任意排列)的从大到小的排列;
 
求一段代码而已,望各位FW不吝赐教啊!在线等!
 
var
i: Integer;
sl: TStringList;
begin
sl := TStringList.Create;
sl.CommaText := '5,4,6,3,2,1,7,8,9,0';
sl.Sort;
ShowMessage(sl.CommaText);
sl.Free;
end;
 
以上的方法仅对字符串的排序有效。
 
谢谢liyinwei,继续等!
 
楼主要数字排序的吗?
 
procedure TForm1.Sort(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] < Middo
Inc(Lo);
while A[Hi] > Middo
Dec(Hi);
if Lo <= Hi then
begin
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;
 
procedure TForm1.Button3Click(Sender: TObject);
var
i: Integer;
sl: array[0..10] of Integer;
s: String;
begin
Randomize;
for i := 0 to 10do
sl := Random(1000);
Sort(sl);
for i := 0 to 10do
s := s + '|' + IntToStr(sl);
ShowMessage(s);
end;
 
不好意思,我这边了路由限制了每次发送的数据量,所以分开4次发送,安循序接起来就可以了。
 
顶部