有哪各函數可以讓數字由小至大或由大至小排列 |
答題得分者是:Mickey
|
vampire
一般會員 ![]() ![]() 發表:3 回覆:0 積分:0 註冊:2003-10-21 發送簡訊給我 |
|
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
小至大
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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |