1樓:
function desccomtext(list:tstringlist;index1,index2:integer):integer;
begin
result:=-ansicomparetext(list[index1],list[index2]);
end;
procedure tform1.button1click(sender: tobject);
varlist:tstringlist;
begin list:=tstringlist.create;
list.add('aaa'); list.add('bbb');
list.add('ccc');
list.customsort(desccomtext);
showmessage(list.text);end;
它是一個函式型別的引數,比如定義:
function qcksort(list: tstringlist; index1, index2: integer): integer;
begin
if list[index1] > list[index2] then result := 1
else if list[index1] < list[index2] then result := -1
else result := 0;
end;//表示tstringlist的所有項按字母升序排列
呼叫他:
varstrlist: tstringlist;
begin
strlist := tstringlist.create;
//...
strlist.customsort(qcksort);
end;
2樓:
ansicomparetext 比較字串(不區分大小寫)
delphi氣泡排序(由大到小)
3樓:叮噹貓武漢
下面這段程式有陣列越界錯誤:
for i:=low(a) to high(a)-1 dofor j:=low(a) to high(a)-i doif a[j]a[10]不成立,沒有進行資料交換的緣故。
正確應改為:
procedure bublerank(var a:array of integer;maxtomin:boolean);
var i,j,t,temp:integer;
begin
if maxtomin then //由大到校排序
begin
for i:=low(a) to high(a)-1 dofor j:=low(a) to high(a)-i-1 do // 這裡改了
if a[j]a[j+1] then
begin
t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
end;//end else
end;//end function
delphi對數字進行排序
4樓:下揚州啊
拆分到陣列,氣泡排序,輸出到文字框
delphi 排序
5樓:臺浦澤
var a:array[0..3] of integer;
b:integer;
i,j:integer;
begin
a[0]:=strtoint(edit1.text);
a[1]:=strtoint(edit2.text);
a[2]:=strtoint(edit3.text);
a[3]:=strtoint(edit4.text);
for i := 0 to 2 do
for j := i+1 to 3 do
if a[i]
6樓:人間雜貨店
delphi 的排序 更加確切的說法應該算是 資料結構中的概念概念1、 排序:按照一定的關鍵字,將一個序列排列成想要得到的一個新的序列。
2、 內部排序和外部排序:整個排序過程完全在記憶體中進行,叫做內部排序。資料量較大需要藉助外部儲存裝置才能完成,叫做外部排序。
3、 主關鍵字和此關鍵字:
4、 排序的穩定性:對於相同的元素來說,在排序之前和之後的書訊是一樣的,那麼這種排序就是穩定的排序,如果順序發生了變化,那麼就是不穩定排序。
具體的用演算法實現的排序語句,這裡就不多做介紹了你單純的提出delphi 排序的問題,這個概念太寬泛。
在delphi中,怎樣實現排序
7樓:匿名使用者
給你個氣泡排序法
delphi的快速排序演算法
8樓:己聞楣
先不看快速排序演算法的正確與否,首先要明確固定陣列和動態陣列不是一種東西,其次是a被定義在const中,是否還允許改變而不出編譯警告,也需要調整編譯引數才能做到,還是先定義為動態陣列變數,setlength(a,6)確定長度,然後再麻煩地一一賦值後試試排序效果吧。
你這個快速排序的演算法不知從**參考而來,像是從c語言等翻譯過來的,其實,classes.pas中就有一個tstringlist.quicksort,和你這個最大的區別在於只有一處遞迴呼叫,而且pascal風格更加明顯,可供學習。
9樓:匿名使用者
參見tstringlist.sort
delphi字元排序
10樓:匿名使用者
function customsortproc(list: tstringlist; index1, index2: integer): integer;
vari :integer;
txt1,txt2,tmp :widestring;
begin
tmp := list.strings[index1];
txt1 := '';
i := 1;
repeat
txt1 := txt1 + tmp[i];
inc(i,2);
until i >= length(tmp);
tmp := list.strings[index2];
txt2 := '';
i := 1;
repeat
txt2 := txt2 + tmp[i];
inc(i,2);
until i >= length(tmp);
result := comparetext(txt1,txt2);
end;
procedure tform1.button1click(sender: tobject);
varsl :tstringlist;
begin
sl := tstringlist.create;
trysl.add('abcd');
sl.add('1975ac8b');
sl.add('1a6782');
sl.add('windows');
sl.add('aw4u3f');
sl.sort;
showmessage(sl.text); //顯示預設排序sl.customsort(customsortproc);
showmessage(sl.text) //顯示只選字元的奇數位排序
finally
freeandnil(sl);
end;
end;
11樓:匿名使用者
測試如下:
樓主給的函式未能成功的呼叫~~!恕我學淺…原因是資料型別的轉換:tstringlist、array of string、string、strings這四種資料型別之間的轉換。
比如說,如何通過呼叫函式function st(sl: tstringlist): sortarr;將edit1的文字內容進行排序,然後在memo1中顯示出來。
二樓給出函式,在delphi 7.0環境下編譯通過。兩個showmessage(sl.text)輸出的都是源字串!
VB的簡單氣泡排序
原因有二,一是你沒把變數賦值 因此輸出全是0 二是你的程式有些錯誤,應該是a i 而不是a 1 下面為修改後的程式。private sub command1 click dim a 30 as integer dim i,j,tem as integerconst n 30 給a i 賦值 for ...
簡單的c 排序函式,幫忙看一下
for i 0 i 5 i n n 10 int a new int n for i 0 i你的i變數有問題,好好看看吧。c 排序函式 include int p int x,int y return x void main tmp p x,10 這裡傳參,不需要 10 陣列名即可,還有x不能作為左...
delphi中的小問題
簡單點吧,把label1.caption設定成10,然後 procedure tform1.timer1timer sender tobject begin label1.caption inttostr strtoint label1.caption 1 if strtoint label1.ca...