delphi实现冒泡、选择、快速三种排序方法过程

减小字体 增大字体 作者:佚名  来源:不详  发布时间:2011-01-28 11:50:53

procedure selectrank(var a: array of integer; maxtomin: boolean); // 选择排序;
var
  i, j, t: integer;
begin
  if maxtomin then // 由大到小
  begin
    for i := low(a) to high(a) - 1 do
      for j := i + 1 to high(a) do
        if a[i] < a[j] then
        begin
          t := a[i];
          a[i] := a[j];
          a[j] := t;
        end;
  end
  else // 由小到大
  begin
    for i := low(a) to high(a) - 1 do
      for j := i + 1 to high(a) do
        if a[i] > a[j] then // 关键区别是符号
        begin
          t := a[i];
          a[i] := a[j];
          a[j] := t;
        end;
  end;
end;

procedure speedrank(var a: array of integer; maxtomin: boolean); // 快速排序
var
  i, j, t: integer;
  flag: boolean;
begin
  if maxtomin then // 由大到小
  begin
    i := 1;
    repeat
      flag := true;
      for j := low(a) to high(a) - i do
        if a[j] < a[j + 1] then
        begin
          t := a[j];
          a[j] := a[j + 1];
          a[j + 1] := t;
          flag := false;
        end;
      i := i + 1;
    until flag;
  end // end if
  else // 由小到大
  begin
    i := 1;
    repeat
      flag := true;
      for j := low(a) to high(a) - i do
        if a[j] > a[j + 1] then // 关键点是大于好还是小于号
        begin
          t := a[j];
          a[j] := a[j + 1];
          a[j + 1] := t;
          flag := false;
        end;
      i := i + 1;
    until flag;
  end;
end;

procedure bublerank(var a: array of integer; maxtomin: boolean); // 冒泡排序法;
var
  i, j, t, temp: integer;
begin
  if maxtomin then // 由大到校排序
  begin
    for i := low(a) to high(a) - 1 do
      for j := low(a) to high(a) - i - 1 do
        if a[j] < a[j + 1] then
        begin
          t := a[j];
          a[j] := a[j + 1];
          a[j + 1] := t;
        end;
  end // end if
  else // 由小到大排序
  begin
    for i := low(a) to high(a) - 1 do
      for j := low(a) to high(a) - i - 1 do
        if a[j] > a[j + 1] then
        begin
          t := a[j];
          a[j] := a[j + 1];
          a[j + 1] := t;
        end;
  end; // end else

end; // end function

过程可直接调用,对源数据进行排序操作。
自我感觉,冒泡算法复杂些,选择排序算法简单些,快速排序速度快。
 

Tags:

作者:佚名
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

广告位置B