全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2221
推到 Plurk!
推到 Facebook!

有哪各函數可以讓數字由小至大或由大至小排列

答題得分者是:Mickey
vampire
一般會員


發表:3
回覆:0
積分:0
註冊:2003-10-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-21 13:42:36 IP:203.204.xxx.xxx 未訂閱
列如算出來的a值為-10,20,-40,50,7,-12 如何排序
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-21 14:17:38 IP:218.163.xxx.xxx 未訂閱
vampire 你好 :    參考看看 :
function MySortAsc(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := CompareValue(StrtoInt(List[Index1]),StrToInt(List[Index2]));
end;    function MySortDesc(List: TStringList; Index1, Index2: Integer): Integer;
begin
  Result := -MySortAsc(List,Index1,Index2);
end;    procedure TForm1.Button1Click(Sender: TObject);
var s : TStringList;
begin
  s := TStringList.Create;
  try
    s.CommaText := '-10,20,-40,50,7,-12';
    s.Sorted := False;
    s.CustomSort(MySortAsc); // 由小到大
    showmessage(s.CommaText);
    s.CustomSort(MySortDesc); // 由大到小
    showmessage(s.CommaText);
  finally
    s.Free;
  end;
end;
Note : 須增加 use Math. 發表人 - Mickey 於 2003/10/21 14:20:11
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-21 14:47:03 IP:203.66.xxx.xxx 未訂閱
 
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  PMyList = ^AList;
  AList = record
    I: Integer;
  end;    type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    function CompareNum(Item1, Item2: PMyList): Integer;
begin
    Result :=  Item1.I - Item2.I;
end;    procedure TForm1.FormCreate(Sender: TObject);
var
    tl:TList;
    a1:PMyList;
    i:integer;
begin
  try
    tl := Tlist.Create;
    New(a1);
    a1.I := -10;
    tl.Add(a1);
    New(a1);
    a1.I := -20;
    tl.Add(a1);
    New(a1);
    a1.I := 30;
    tl.Add(a1);
    New(a1);
    a1.I := 100;
    tl.Add(a1);
    New(a1);
    a1.I := -100;
    tl.Add(a1);        tl.Sort(@CompareNum);        for i:=0 to tl.Count -1 do
    begin
      a1 := tl.Items[i];
      memo1.Lines.Add(IntToStr(a1.I));
    end;
   finally
     tl.Free;
   end;
end;    end.    
上面是利用 TList 作排序的小範例,寫得有點亂,請包涵 另外寫一個 bubble sort,binary sort , Quick sort function 也是可以的 詳情請參考各大 Data Struct 書內範例
roviury
一般會員


發表:3
回覆:49
積分:15
註冊:2008-08-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-10-14 21:17:43 IP:203.186.xxx.xxx 訂閱
小至大
function CompareNum(Item1, Item2: Pointer): Integer;
begin
Result := Pointer(Item1) - Pointer(Item2);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
tl:TList;
begin
tl := Tlist.Create;
tl.Add(Pointer(-10));
tl.Add(Pointer(-20));
tl.Add(Pointer(30));
tl.Add(Pointer(100));
tl.Add(Pointer(-100));
tl.Sort({@}CompareNum);
for i:=0 to tl.Count -1 do
begin
memo1.Lines.Add(IntToStr(Integer(tl.Items[i])));
end;
tl.Free;
end;
編輯記錄
roviury 重新編輯於 2009-05-11 17:50:46, 註解 無‧
roviury 重新編輯於 2009-05-11 17:51:07, 註解 無‧
系統時間:2017-12-16 15:21:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!