#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);
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDx0aW1lLmg+CgoKdm9pZCBwcm4oaW50KiBhLGludCBuKXsKICAgZm9yIChpbnQgaT0wO2k8bjtpKyspCiAgICAgIHByaW50ZigiJSszZCAiLGFbaV0pOwogICBwdXRjaGFyKCdcbicpOwp9Cgp2b2lkIHN3YXAoaW50JiBhLGludCYgYil7CiAgIGludCB1PWE7CiAgIGE9YjsKICAgYj11Owp9Cgp2b2lkIGhfc29ydChpbnQqIGEsaW50IG4pewogICBpbnQgdTE9MCx1Mj1uLTEvL9Cz0YDQsNC90LjRhtGLINGB0L7RgNGC0LjRgNGD0LXQvNC+0LPQviDQtNC40LDQv9Cw0LfQvtC90LAKICAgICAgICAgICAgICAgLGo9MDsKICAgZG8gewogICAgICBpZiAoYVtqXTwwKXsKICAgICAgICAgc3dhcChhW2pdLGFbdTJdKTsKICAgICAgICAgdTItLTsKICAgICAgfSBlbHNlCiAgICAgICAgIGlmIChhW2pdPT0wKXsKICAgICAgICAgICAgc3dhcChhW2pdLGFbdTFdKTsKICAgICAgICAgICAgdTErKzsKICAgICAgICAgICAgaisrOwogICAgICAgICB9ZWxzZSBqKys7CiAgICAgIHBybihhLG4pOwogICB9d2hpbGUgKGo8PXUyKTsKCgoKfQppbnQgbWFpbih2b2lkKXsKICAgY29uc3QgaW50IE49MjU7CiAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICBpbnQgYXJyW05dOwogICBmb3IgKGludCBpPU4tMTtpPj0wO2ktLSkKICAgICAgaWYgKHJhbmQoKSUxMD49OCkKICAgICAgICAgYXJyW2ldPTA7CiAgICAgIGVsc2UgYXJyW2ldPXJhbmQoKSU4MC00MDsKCiAgIHBybihhcnIsTik7CiAgIHBybihhcnIsTik7CiAgIHB1dGNoYXIoJ1xuJyk7CiAgIGhfc29ydChhcnIsTik7CiAgIHB1dGNoYXIoJ1xuJyk7CiAgIHBybihhcnIsTik7Cgp9Cg==