CWMFoundation – Algorithm

CWMFoundation

CWMFoundation 意为 Charlie.Wang Foundation Mini(迷你版)

是作者工作中为方便代码编写,逐渐整理归档的一些代码集。

在原有CWFoundation的基础上,去除了大量窗体上的控件,只留下一个Delphi Pas文件的轻量级类。

Algorithm是用来存放算法的类。

//***********************************
//***** CWMFoundation Algorithm ******
//***********************************
{$REGION ' CWMFoundation Algorithm Implementation '}
function TCWAlgorithm.SortWithBuddle(_array: TARR_INT):TARR_INT;
var
  arrLength,i,j,tmp_swap:Integer;
begin
  try
    arrLength := Length(_array);
    for i:=0 to arrLength-1 do
    begin
      for j:=i+1 to arrLength-1 do
      begin
        if _array[i]>=_array[j] then
          begin
            tmp_swap:=_array[i];
            _array[i]:=_array[j];
            _array[j]:=tmp_swap;
          end;
      end;
    end;
  finally
    Result := _array;
  end;
end;
 
function TCWAlgorithm.SortWithShell(_array: TARR_INT):TARR_INT;
var
  arrLength,i,j,k,tmp_swap:Integer;
begin
  try
    arrLength := Length(_array);
    k:=(arrLength div 2);
    while k>0 do
    begin
      Application.ProcessMessages();
      for j:=k to arrLength-1 do
      begin
        tmp_swap:=_array[j];
        i:=j-k;
        while (i>=0) and (_array[i]>=tmp_swap) do
          begin
            _array[i+k]:=_array[i];
            i:=i-k;
          end;
        _array[i+k]:=tmp_swap;
      end;
      k:=k div 2;
    end;
  finally
     Result := _array;
  end;
end;
{$ENDREGION}