回 帖 发 新 帖 刷新版面

主题:排序算法合集(如有别的,欢迎大家完善)

void   insertsort(int   a[],int   n)           //简单插入排序   
  {   
          int   i,j,k,t;   
          for(i=1;i<n;i++)   
          for(j=0;j<i;j++)   
          if(a[j]>a[i])   
          {   
                  t=a[i];   
                  for(k=i;k>j;k--)   a[k]=a[k-1];   
                  a[j]=t;   
                  break;   
          }   
  }   
    
  void   InsertSort(int   a[],int   n)           //折半插入排序   
  {   
          int   i,j,temp,low,high,m;   
  for(i=1;i<n;i++)   
  {   
          temp=a[i];   
          low=0;high=i-1;   
          while(low<=high)   
          {   
                  m=(low+high)/2;   
                  if(temp<a[m])   high=m-1;   
                  else   low=m+1;   
          }   
          for(j=i-1;j>=low;j--)   a[j+1]=a[j];   
          a[low]=temp;   
  }   
  }   
    
  typedef   struct{     //表插入排序(不需要移动元素   )   
          int   a;   
          int   next;               //指针,指向比a大一点的数   
    }slnode;   
    
  void   arrange(slnode   r[],int   n)   
  {   
          int   i,p,q;   
          slnode   t;   
          p=r[0].next;   
          for(i=1;i<n;i++)   
          {   
                while(p<i)   p=r[p].next;   
          q=r[p].next;                   //必须有   
          if(p!=i)   
          {   
                  t=r[p];r[p]=r[i];r[i]=t;   
                  r[i].next=p;   
          }   
          p=q;   
          }   
  }   
    

回复列表 (共22个回复)

11 楼


[em2]谢谢!!!实用。

12 楼

knuth的大作中提到的排序方法至少有25种。
想问你:
knuth是哪个作者?麻烦给详细介绍一下,好吗?感谢先!

13 楼


14 楼


辛苦拉 佩服!

15 楼

up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!
up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!up!
up!up!up!up!up!up!up!up!up!up!up!up!

16 楼

狂顶!!!!
对于我这样的初学者来说从中能学到不少东西。
谢谢LZ

17 楼

没看过这么好的贴!!!!

18 楼

写得完的呀,希尔,基数,选择,冒泡,归并,堆,计数,快速...每种还可以细分,加油呀

19 楼

你这算法效率实在太低了,用在游戏里面贴图那还卡死啊

20 楼

又把老帖翻出来了?

我来回复

您尚未登录,请登录后再回复。点此登录或注册