15rqck.c

来自「介绍了多种C语言的常用算法」· C语言 代码 · 共 46 行

C
46
字号

  #include "15rbub.c"
  void rqck(p,n)
  int n;
  double p[];
  { int m,i0,*i;
    double *s;
    void rsplit();
    i=&i0;
    if (n>10)
      { rsplit(p,n,i);
        m=i0;
        rqck(p,m);
	s=p+(i0+1);
        m=n-(i0+1);
        rqck(s,m);
      }
    else rbub(p,n);
    return;
  }

  static void rsplit(p,n,m)
  int n,*m;
  double p[];
  { int i,j,k,l;
    double t;
    i=0; j=n-1;
    k=(i+j)/2;
    if ((p[i]>=p[j])&&(p[j]>=p[k])) l=j;
    else if ((p[i]>=p[k])&&(p[k]>=p[j])) l=k;
    else l=i;
    t=p[l]; p[l]=p[i];
    while (i!=j)
      { while ((i<j)&&(p[j]>=t)) j=j-1;
        if (i<j)
          { p[i]=p[j]; i=i+1;
            while ((i<j)&&(p[i]<=t)) i=i+1;
            if (i<j)
              { p[j]=p[i]; j=j-1;}
          }
      }
    p[i]=t; *m=i;
    return;
  }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?