排序 |
尚未結案
|
sundy6719
初階會員 ![]() ![]() 發表:136 回覆:78 積分:42 註冊:2002-07-10 發送簡訊給我 |
|
mine
中階會員 ![]() ![]() ![]() 發表:28 回覆:129 積分:56 註冊:2004-03-31 發送簡訊給我 |
|
sundy6719
初階會員 ![]() ![]() 發表:136 回覆:78 積分:42 註冊:2002-07-10 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
引言: 這篇文章我看過了覺的很難做不出來~~ 我要的是在一個二維陣列內把所有的合計做一個排序 比如有一些同學的國文成績各有不同的分數而當輸入完成後自動做一個名次排列 我這是以二維陣列做的二維陣列的 SORT, 所以是完全在記憶體中的排序, 自己寫一個就好了呀! 如果資料不多(<1000筆), 那用 BUBBLE SORT 就夠了!! SORT 方法的實作隨找一本資料結構的書上都會有提. DELPHI 的 DEMOS 目錄下, 還有用 Thread 來實作各式 SORT Function 的 SAMPLE CODE. 參考一下吧!! ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
sundy6719
初階會員 ![]() ![]() 發表:136 回覆:78 積分:42 註冊:2002-07-10 發送簡訊給我 |
|
william
版主 ![]() ![]() ![]() ![]() ![]() 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
給你一段簡單的 SAMPLE.
unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; BtnIndex: TButton; btnValue: TButton; procedure FormCreate(Sender: TObject); procedure BtnIndexClick(Sender: TObject); procedure btnValueClick(Sender: TObject); private { Private declarations } procedure ShowArray ; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} type baType=array[1..10,1..2] of integer ; var ba : baType ; procedure Sort(var A: baType;iType:integer); var i, j: Integer; procedure SwapElement(x,y:integer) ; var t1, t2 : integer ; begin t1:=ba[x,1] ; t2:=ba[x,2] ; ba[x,1]:=ba[y,1] ; ba[x,2]:=ba[y,2] ; ba[y,1]:=t1 ; ba[y,2]:=t2 ; end ; begin for i:= High(A) downto Low(A) do for j:= Low(A) to High(A) - 1 do if A[j,iType] > A[j 1,iType] then SwapElement(j,j 1) ; end; procedure TForm1.FormCreate(Sender: TObject); var i : integer ; begin randomize ; for i:=1 to 10 do begin ba[i,1]:=i; ba[i,2]:=random(100) 1 ; end ; ShowArray ; end; procedure TForm1.BtnIndexClick(Sender: TObject); begin Sort(ba,1) ; ShowArray ; end; procedure TForm1.btnValueClick(Sender: TObject); begin Sort(ba,2) ; ShowArray ; end; procedure TForm1.ShowArray; var i : integer ; begin Memo1.Clear ; Memo1.lines.Add('Index : Value') ; Memo1.lines.Add('=============') ; for i:=1 to 10 do Memo1.Lines.add(format('%.5d : %.4d',[ba[i,1],ba[i,2]])) ; end; end....Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
change.jian
版主 ![]() ![]() ![]() ![]() ![]() 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
hi,sundy6719:
如果你想要把陣列裡的資料排序的話,其實TStringList是個很好的選擇.TStringList裡已有排序的功能,底下是Online help的範例:
var MyList: TStringList; begin MyList := TStringList.Create; MyList.Add('Plants'); MyList.Add('Animals'); MyList.Add('Minerals'); MyList.Sorted := True; ListBox1.Items.AddStrings(MyList); MyList.Free; end;上面是針對字串的內容去排序,如果你有自己的排序規則,也可以自己設定,然後把排序方法指定給TStringList即可,詳見TStringList.CustomSort的online help裡的說明.底下是範例: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function SortInteger(List: TStringList; Index1, Index2: Integer): Integer; var iVal1,iVal2:Integer; begin iVal1:=StrToIntDef(List.Strings[Index1],0); iVal2:=StrToIntDef(List.Strings[Index2],0); Result:=iVal1-iVal2; end; { TForm1 } procedure TForm1.Button1Click(Sender: TObject); var MyList: TStringList; begin MyList := TStringList.Create; MyList.Add('345'); MyList.Add('237'); MyList.Add('178'); MyList.CustomSort(SortInteger); ListBox1.Items.AddStrings(MyList); MyList.Free; end; end. |
speedup
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |