鸡尾酒排序算法

来源:互联网 发布:t淘宝客 顾客部分退款 编辑:程序博客网 时间:2024/04/28 14:10

也就是定向冒泡排序, 鸡尾酒搅拌排序, 搅拌排序 (也可以视作选择排序的一种变形), 涟漪排序, 来回排序 or 快乐小时排序, 是冒泡排序的一种变形。此演算法与冒泡排序的不同处在于排序时是以双向在序列中进行排序。

使用鸡尾酒排序为一列数字进行排序的过程可以通过右图形象的展示出来:

数组中的数字本是无规律的排放,先找到最小的数字,把他放到第一位,然后找到最大的数字放到最后一位。然后再找到第二小的数字放到第二位,再找到第二大的数字放到倒数第二位。以此类推,直到完成排序。

procedure Change(var dLeft,dRight:Double);
var
  temp:Double;
begin
  temp:=dLeft;
  dLeft:=dRight;
  dRight:=temp;
end;

procedure TForm1.CockSorts(var latarray:array of double);
var
  i,low,up,index:Integer;
  RightValue,LeftValue:Double;
begin
  low:=0;
  up:=High(latarray);
  index:=low;
  while(up>low) do
  begin
    for i:=low to up-1 do
    begin
      if (latarray[i]>latarray[i+1]) then
      begin
         Change(latarray[i],latarray[i+1]);
         index:=i;
      end;
    end;
    up:=index;
    for i:=up downto low do
    begin
       if (latarray[i]<latarray[i-1]) then
       begin
          Change(latarray[i],latarray[i-1]);
          index:=i;
       end;
    end;
    low:=index;
  end;
end;

原创粉丝点击