当前位置:编程学习 > Delphi >>

文本框中输入一些数字字符,用逗号隔开,怎样用delphi实现从大到小排序

补充:比如文本框中输入23,12,56,34,71 点击按钮后在另一个文本框中输出12,23,34,56,71 只是打个比方,数字是运行后随便输的。。。
追问:a是哪来的啊?
答案:Procedure qsort(l,r:longint);
var i,j,x,y:longint;
  begin
  i:=l;j:=r;x:=a[random(r-l)+l];//随机化即可
    Repeat
    while a<x do inc(i);
    while a[j]>x do dec(j);
    if i<=j then
      begin
      y:=adf;
      a:=a[j];
      a[j]:=y;
      inc(i);
      dec(j);
    end;
其他:使用递归的方法进行比较,将值大的放后边,值小的放前边.
最后输出. //用记事本写的,可能有些bug

//快速排序
Procedure qsort(l,r:longint);
var i,j,x,y:longint;
  begin
  i:=l;j:=r;x:=a[random(r-l)+l];//随机化即可
    Repeat
    while a<x do inc(i);
    while a[j]>x do dec(j);
    if i<=j then
      begin
      y:=a;
      a:=a[j];
      a[j]:=y;
      inc(i);
      dec(j);
    end;
  until i>j;
  if i<r then qsort(i,r);
  if j>l then qsort(l,j);
end;

begin

S:=edit1.text;

top:=0;now:='';

for i:=1 to length(s) do
if s[i]=',' then begin inc(top);val(now,a[top],code);now:='';end else now:=now+s[i];
//如果最后还有一个数,将这个数纳入栈
if now<>'' then begin  inc(top);val(now,a[top],code);end;
//排序
qsort(1,top);
s:='';
for i:=1 to top do
begin
str(a[i],now);
s:=s+now+',';
end;
//除去最后一个','
s:=copy(s,1,length(s)-1);
edit2.text:=s;

end; 转变成整数,存到数组中,排序后,再转成字符型,显示出来 var tlist:tstringlist
      i:integer;
begin
 tlist.CommaText:=text1.text;
 tlist.sort;
 text2.text:=tlist.text;
end; 

上一个:delphi入门问题,ni:=strtoint(Ni.Text);报错
下一个:delphi的这两个句柄值不一样?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,