要求一个具体的算法
================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
     可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]

解决方案 »

  1.   

    排序的规律是,依次交替选取在它前面的数和后面的数,按此规律排序,算法如下:var 
      i1,i2,j:integer;
      x: float;
      a[1..10000]: integer;
    begin
      i1:=trunc(x);  //取得最接近x的两个整数
      i2:=i1+1;
      if x-i1>=0.5 then   //使循环从选取i1开始
        begin
          a[1]:=i2;
          j:=1;
        end
      else
        j:=0;
      while j<10000 do  //交替选取i1和i2
        begin
          if i1>=1 then
            begin
            j:=j+1;
            a[j]:=i1;
            i1:=i1-1;
            end;
          if i2<=10000 then
            begin
              j:=j+1;
              a[j]:=i2;
              i2:=i2+1;
            end;
        end;
    end;但这个算法有很大的局限,只适用于整数等差数列而且与通常的排序算法相比效率并没有提高很多(时间复杂度都是O(n))我的看法是用通常算法即可,因为适用性广.你追求的最优算法不会在排序速度上有重大突破,因为无论用什么方法,时间复杂度至少都是O(n).
    花了很多力气,只提高了一点点,不值得吧?