Рассмотрим реализацию функций сортировки методом Шелла и быстрой сортировки на С++ . 

/*   ФУНКЦИЯ  СОРТИРОВКИ МЕТОДОМ ШЕЛЛА */

  void Shell(int A[],int nn)

{ int i,j,k,x,ii;

  k =( nn+1)/2;

  while ( k >= 1 )

  {

   for ( i=k; i<nn; i++ )

            { if ( A[i-k] > A[i] )

                     { x = A[i]; j = i-k;

                      M: A[j+k] = A[j];

                       if ( j>k )

                              { if (A[j-k] > x )

                                        { j = j-k;

                                          goto M;

                                        }

                              }

                      A[j] = x;

 

/*                                      printf(" \nk = %d x=%d: ",k,x);

                                for (ii=0; ii<nn; ii++)

                                printf(" %d  ",A[ii]);*/

 

                     }

            }

                               /* Отладочная печать */

                                printf(" \nk = %d ",k);

                                for (ii=0; ii<nn; ii++)

                                printf(" %d  ",A[ii]);

 

   if ( k>2 )

            k = (k+1)/2;

   else

            k = k/2;

  }

}

 

/*   ФУНКЦИЯ  БЫСТРОЙ СОРТИРОВКИ QuickSort */

  void QuickSort(int A[],int L,int R)

{ int i,j,k,x,m;

  i = L; j = R;

  x =A[(L+R)/2];

  do

          {

                   while ( A[i] < x )

                    i++;

                   while ( x < A[j] )

                    j--;

                   if (i <= j)

                    { k = A[i]; A[i] = A[j]; A[j] = k;

                            i++; j--;

                             /* Отладочная печать */

                                      printf("\n i=%d j=%d x=%d: ",i-1,j+1,x);

                                     for (m=0; m<n; m++)

                                               printf(" %d",A[m]);

                    }

          }

  while (i < j);

  if (L < j)

         { printf("\t L=%d j=%d",L,j);

           QuickSort(A,L,j);

         }

  if (i < R)

         { printf("\t i=%d R=%d",i,R);

           QuickSort(A,i,R);

         }

}