- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
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.