Delphi 大小排序算法代码


本文整理自网络,侵删。

 

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 关闭icesword等

Delphi 去掉mdi窗口的滚动条

Delphi label1 自动尺寸

Delphi pascal实现二分查找算法

Delphi fmx输出彩色文本

Delphi firemonkey 图片显示拉伸不变形

Delphi 一个中英文记录Delphi实现

Delphi与进程、窗口句柄、文件属性、程序运行状态

Delphi snowflake一秒可生成500万id的分布式自增id算法―雪花算法

Delphi 把一个ico转换为bmp

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...