当前位置:物业房屋租赁管理系统平台 > 租房子 >

delphi的冒泡排序对一组数字进行排序,找出最大最小值,但是如果在这组数据中

时间:2012-12-03 08:43    来源:未知    作者:admin    点击:

delphi的冒泡排序对一组数字进行排序,找出最大最小值,但是如果在这组数据中最大或者最小值有重复是否还是一样的处理

如有重复,可处理,也可不处理,不稳定排序与稳定排序。
冒泡效率很差,一般不用,快速排序较好。我写了冒泡,如下:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure BublSort(var aStrings: TStrings);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BublSort(var aStrings: TStrings);
var
  i,j: Integer;
  temp: string;
begin
  if Assigned(aStrings)then
  begin
    for i:= aStrings.Count-2 downto 0 do
    begin
      for j:= 0 to i do
      begin
        if aStrings[j]>aStrings[j+1] then
        begin
          //aStrings.Exchange(j,j+1);
          temp:= aStrings[j+1];
          aStrings[j+1]:= aStrings[j];
          aStrings[j]:= temp;
        end;
      end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  aStrings: TStrings;
begin
  aStrings:= TStringList.Create;
  try
    aStrings.Delimiter:= ',';
    aStrings.DelimitedText:= '2,3,7,4,1';
    //TStringList(aStrings).Sort;//调用tstringList封装的sort,快速排序,效率好
    BublSort(aStrings);//我写的冒泡排序函数
    Memo1.Lines.Assign(aStrings);
  finally
    aStrings.Free;
  end;
end;

end.


深圳市老房管科技有限公司版权所有 © 粤ICP备2021082604号
联系电话:0755-25497702