码迷,mamicode.com
首页 > 编程语言 > 详细

多种排序算法

时间:2015-03-21 11:04:52      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

插入排序

已经有一个排好的序列,要将新元素放到序列合适的位置。

int *InsertSortA(int *R,n)
{
 int i,j;
for(j=1;j<n;j++) {     i=j-1; tmp=R[j]; while(i>=0&&R[i]<tmp) { R[i+1]=R[i]; i--; } R[i+1]=tmp;   }
return R; }

 

上述算法中每次都要判断i是否小于0,可以让数组第一个元素是一个很小的值,使得R[0]<min{Ri},i为1到n,整个数组长度为n+1.在判断R[i]<tmp时,一定会结束,因为R[0]一定小于R[i].

 

int *InsertSortB(int *R,n)
{
  int i,j;
  for(j=2;j++;j<=n)
  {
    i=j-1;
    tmp=R[j];
    while(R[i]<tmp)
    {R[i+1]=R[i];
    i--;
    }
    R[i+1]=tmp;
   }
  return R; }


Shell排序

Shell的大意是:把元素按下标的一定增量分组,对每组使用直接插入排序。随着增量逐渐减少,每组包含的记录越来越多。当增量值减至1时,整个文件恰好被分成一个组,算法便终止。

 

多种排序算法

标签:

原文地址:http://www.cnblogs.com/linnn/p/4355199.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!