鱼C论坛

 找回密码
 立即注册
查看: 2481|回复: 1

[原创] delphi冒泡排序随机&手动输入

[复制链接]
发表于 2016-5-29 15:49:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
根据小甲鱼delphi冒泡排序V2.0改编的一个既支持产生随机数排序,又支持手动输入排序。当在提示框中输入产生随机数列的个数为0时,可以进行手动输入的模式来进行冒泡排序,格式为:数字 空格 数字 空格 数字。点击点我进行输入后再点冒泡排序按钮进行排序显示。如果在提示框中输入的随机数列个数非零,那么可以随时产生该个数的随机数列,并可以点击冒泡排序进行排序显示。

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    btn1: TButton;
    btn2: TButton;
    edt1: TEdit;
    btn3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

var
  num: Integer = 0;
  arr: array of Integer;
  flag: Boolean = True;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  num:= StrToInt(InputBox('提示', '请输入产生随机数列的个数:          ', ''));
  if (num = 0) then
    begin
      MessageBox(Handle, '随机数将不产生,需要手动输入', '提示', MB_OK or MB_ICONWARNING);
      btn1.Caption:= btn1.Caption + '(0)';
      btn1.Enabled:= False;
    end
  else
    begin
      btn1.Caption:= btn1.Caption + '(' + IntToStr(num) + ')';
      SetLength(arr, num);
      btn3.Enabled:= False;
      edt1.ReadOnly:= True;
    end;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  i: integer;
begin
  Randomize;
  if flag then
    begin
      edt1.Text:= '';
      for i:= 0 to (num-1) do
      begin
        arr:= Random(100);
        edt1.Text:= edt1.Text + ' ' + IntToStr(arr);
      end;
      flag:= False;
    end
end;

procedure TForm1.btn2Click(Sender: TObject);
var
  i,j,temp: Integer;
begin
  temp:= 0;
  flag:= True;
  for i:= 1 to (num - 1) do
    for j:= 0 to (num-i-1) do
    begin
      if (arr[j] > arr[j+1]) then
        begin
          temp:= arr[j+1];
          arr[j+1]:= arr[j];
          arr[j]:= temp;
        end;
    end;
  edt1.Text:= '';
  for i:= 0 to (num-1) do
  begin
    edt1.Text:= edt1.Text + ' ' + IntToStr(arr);
  end;
end;

procedure TForm1.btn3Click(Sender: TObject);
var
  i,j,len: Integer;
  temp,str: string;
begin
  len:= Length(edt1.Text);
  SetLength(arr, len);
  str:= Trim(edt1.Text);
  j:= 0;
  i:= 1;

  while (i < len) do
  begin
    temp:= '';
    while ((str <> #32) and (i <= len)) do
    begin
      temp:= temp + str;
      i:= i + 1;
    end;
    arr[j]:= StrToInt(temp);
    j:= j + 1;
    i:= i + 1;
  end;

  num:= j;
end;

end.

界面

界面

评分

参与人数 1荣誉 +3 鱼币 +10 贡献 +3 收起 理由
~风介~ + 3 + 10 + 3 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-30 11:51:08 | 显示全部楼层
没学过delphi,路过支持下!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 11:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表