Delphi簡單的排序,delphi氣泡排序(由大到小)

2022-03-23 00:10:11 字數 4267 閱讀 7533

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...