
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


void prn(int* a,int n){
   for (int i=0;i<n;i++)
      printf("%+3d ",a[i]);
   putchar('\n');
}

void swap(int& a,int& b){
   int u=a;
   a=b;
   b=u;
}

void h_sort(int* a,int n){
   int u1=0,u2=n-1//границы сортируемого диапазона
               ,j=0;
   do {
      if (a[j]<0){
         swap(a[j],a[u2]);
         u2--;
      } else
         if (a[j]==0){
            swap(a[j],a[u1]);
            u1++;
            j++;
         }else j++;
      prn(a,n);
   }while (j<=u2);



}
int main(void){
   const int N=25;
   srand(time(NULL));
   int arr[N];
   for (int i=N-1;i>=0;i--)
      if (rand()%10>=8)
         arr[i]=0;
      else arr[i]=rand()%80-40;

   prn(arr,N);
   prn(arr,N);
   putchar('\n');
   h_sort(arr,N);
   putchar('\n');
   prn(arr,N);

}
