delphi一些排序算法


本文整理自网络,侵删。

 
最近自己闲着没事,写了一些排序算法,有兴趣的来看看吧,不过我没有做具体的优化,不过测试了一下性能凑合事吧 !

//冒泡排序,delphi语言版本
procedure BubbleSort(var int: array of integer);
var
  temp: Integer;
  I, j: Integer;
  swap: Boolean;
begin
  for I := 0 to Length(int) - 2 do
  begin
    swap := False;
    for j := Length(int) - 1 downto Succ(i) do
    begin
      if int[j] > int[j - 1] then
      begin
        temp := int[j];
        int[j] := int[j - 1];
        int[j - 1] := temp;
        swap := True;
      end;
    end;
    if not swap then
      Exit;
  end;
end;
 


    //冒泡排序java版本
    public static void BubbleSort(int[] intArray)
    {
        int temp;
        boolean    Swap;
        for (int i=0;i<intArray.length-1;i )
        {
            Swap=false;
            for (int j=intArray.length-1;j>i;j--)
            {
                if (intArray[j]>intArray[j-1])
                {
                    temp=intArray[j];
                    intArray[j]=intArray[j-1];
                    intArray[j-1]=temp;
                    Swap=true;
                }
            }
            if (!Swap)
                break;
        }
    }
  

//选择排序delphi版本
procedure SelectionSort(var int: array of Integer);
var
  I: Integer;
  indexOfMin: Integer;
  j: Integer;
  temp: Integer;
begin
  for I := 0 to Length(int) - 2 do
  begin
    indexOfMin := i;
    for j := i 1 to Length(int) - 1 do
    begin
      if int[j] < int[indexOfMin] then
      begin
        indexOfMin := j;
      end;
    end;
    if indexofMin <> i then
    begin
      temp := int[i];
      int[i] := int[indexOfMin];
      int[indexOfMin] := temp;
    end;
  end;
end;
 


    //选择排序
    public static void SelectionSort(int[] intArray)
    {
        int indexOfMin;
        int temp;
        for (int i=0;i<intArray.length-1;i )
        {
            indexOfMin=i;
            for (int j=i 1;j<intArray.length;j )
            {
                if (intArray[j]<intArray[indexOfMin])
                {
                    indexOfMin=j;
                }
            }
            if (indexOfMin!=i)
            {
                temp=intArray[i];
                intArray[i]=intArray[indexOfMin];
                intArray[indexOfMin]=temp;               
            }
        }
    }
 


//插入排序delphi版
procedure InsertSort(var int: array of Integer);
var
  I: Integer;
  Temp: Integer;
  M: Integer;
begin
  for I := 1 to Length(int) - 1 do
  begin
    Temp := int[i];
    M := i;
    while ((M > 0) and (Temp < int[M - 1])) do
    begin
      int[m] := int[m - 1];
      Dec(m);
    end;
    int[M] := Temp;
  end;
end;
//插入排序delphi改进版
procedure InsertSort1(var int:array of Integer);
var
 indexOfMin:Integer;
 temp:Integer;
  I,j: Integer;
begin
 indexOfMin :=0;
 ////////////找到数组中最小的元素////////////
 for I := 1 to Length(int) - 1 do
     begin
       if int[i]<int[indexOfMin] then
          begin
            indexOfMin:=i;
          end;
     end;
 if indexOfMin<>0 then
    begin
      temp:=int[0];
      int[0]:=int[indexOfMin];
      int[indexOfMin]:=temp;
    end;
 for I := 2 to Length(int) - 1 do
   begin
     temp:=int[i];
     j:=i;
     while temp<int[j-1] do
        begin
          int[j]:=int[j-1];
          Dec(j);
        end;
     int[j]:=temp;
   end; 
end; 
  

    //插入排序 java版
    public static void InsertSort(int[] intArray)
    {
        int temp;
        int m;
        for (int i=1;i<intArray.length;i )
        {
            temp=intArray[i];
            m=i;
            while ((m>0)&&(temp<intArray[m-1]))
            {
                intArray[m]=intArray[m-1];
                m--;
            }
            intArray[m]=temp;
        }
    }
    //插入排序--优化
    public static void InsertSort1(int[] intArray)
    {
        int indexOfMin=0;
        int temp;
        int j;
        for (int i=1;i<intArray.length;i )
        {
            if (intArray[i]<intArray[indexOfMin])
            {
                indexOfMin=i;
            }
        }
        if (indexOfMin!=0)
        {
            temp=intArray[0];
            intArray[0]=intArray[indexOfMin];
            intArray[indexOfMin]=temp;
        }
        for (int i=2;i<intArray.length;i )
        {
            temp=intArray[i];
            j=i;
            while (temp<intArray[j-1])
            {
                intArray[j]=intArray[j-1];
                j--;
            }
            intArray[j]=temp;             
        }
    }

相关阅读 >>

Delphi的idhttp报508 loop detected错误的原因

Delphi daysbetween 用法片段

Delphi 获取适合微信使用的当前日期,以int64表示,是当前时间和1970-01-01 00:00:00之间的秒差

Delphi xe 横屏竖屏的管理

Delphi sender 的用法举例

Delphi 动态数组的释放

Delphi程序禁止结束进程

Delphi xe 中的字符串生成哈希值(md5 / sha-1 / jenkins)

Delphi让程序运行后自我删除或恢复名称

Delphi tclientdataset用法详解

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



打赏

取消

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

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

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

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

评论

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