如题。小的在做一些算法的比较。谢谢各位!!

解决方案 »

  1.   

    var
      d1,d2:tdatetime;
    begin
      d1:=now();
      for i:=0 to 10000 do
        //你的代码
      d2:=now();
      //d2-d1就是你的时间,而且时间太短不精确,可以做个循环,不如1000次或10000次或更多。
      

  2.   

    var
      cc: Cardinal;
    begin
      cc := GetTickCount;
      //你的程序
      cc := GetTickCount - cc;
      ShowMessage(CurrToStr(cc) + '豪秒');
    end;
      

  3.   

    谢谢楼上两位。可是测试的数据还是0,放大多少倍都没用。原代码是:
    var cc: Cardinal;
    begin
       cc := GetTickCount;
       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;
       cc := GetTickCount-cc;
       Select_Label.Caption:=('选择排序执行时间:'+CurrToStr(cc) + '豪秒');
    end
      

  4.   

    QueryPerformanceFrequency
    QueryPerformanceCounter
      

  5.   

    还是没解决
    为什么插入排序比快速排序的时间用的还少??
    (在一般情况下,我已经测试了好很多组数据)procedure TForm1.InsertSort(var A: TSortArray);
    var I,J,Temp,K:Integer;
        cc: Cardinal;
    begin
      SortBehind_RichEdit.Clear;
      cc := GetTickCount;
      for K:=0 to 1000 do   //延时用
        begin
           for I:=Low(A)+1 to High(A) do
                 begin
                    Temp:= A[I];
                    J:=I-1;
                    while (Temp<A[J]) and (J>=Low(A)) do
                      begin
                         A[J+1]:=A[J];
                         J:=J-1;
                      end;
                    A[J+1]:=Temp;
                 end;
         end;
      cc := GetTickCount-cc;
      Insert_Label.Caption:=('插入排序执行时间:'+CurrToStr(cc) + ' 豪秒');
    end;
      

  6.   

    GetTickCount是肯定可以的,for 1000次就有數據了
      

  7.   

    QueryPerformanceFrequency
    得到频率
    QueryPerformanceCounter
    得到两次次数差
    次数差除以频率=时间,可以精确到0.00000000000001s
    比GETTICKCOUNT精度要高
      

  8.   

    然。
    QueryPerformanceFrequency
    QueryPerformanceCounter
    解决了问题。
    学到东西了。