频道分类

Delphi 大小排序算法代码

作者:admin 来源: 日期:2020/2/10 19:59:15 人气: 标签:

 

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure SortShell(var aSort: array of Word);
var
  iI, iJ, iK,
  iSize: Integer;
  wTemp: Word;
begin
  iSize := High(aSort);
  iK := iSize shr 1;
  while iK > 0 do begin
    for iI := 0 to iSize - iK do begin
      iJ := iI;
      while (iJ >= 0) and (aSort[iJ] > aSort[iJ + iK]) do begin
        wTemp := aSort[iJ];
        aSort[iJ] := aSort[iJ + iK];
        aSort[iJ + iK] := wTemp;
        if iJ > iK then
          Dec(iJ, iK)
        else
          iJ := 0
      end;
    end;
    iK := iK shr 1;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);

  procedure AddToLB(const Nums: array of Word; LB: TListBox);
  var
    I: Integer;
  begin
    for I := Low(Nums) to High(Nums) do
      LB.Items.Add(IntToStr(Nums[I]));
  end;

var
  I: Integer;
  Nums: array[1..50] of Word;
begin
  // Create list of random numbers and display it
  Randomize;
  for I := Low(Nums) to High(Nums) do
    Nums[I] := Random(1000);
  AddToLB(Nums, ListBox1);
  // Sort list and display sorted numbers
  SortShell(Nums);
  AddToLB(Nums, ListBox2);
end;

end.


上一篇:Delphi 上次访问该文件的时间下一篇:没有资料