#include<stdio.h>
int print_arr(int arr[], int n)
{
int z;
for(z=0 ; z<n ; z++)
{
printf("%d ", arr[z]);
}
printf("\n");
}
void binarySort(int arr[], int arr_length)
{
int i, count=1;
for(i=0 ; i<arr_length ; i++)
{
if(arr[i]==1)
{
arr[i]=count;
count++;
}
}
int num0s=arr_length-count+1;
int j=0;
int k=0;
while(j<num0s)
{
if(arr[k]==0)
{
int temp=arr[k];
arr[k]=arr[j];
arr[j]=temp;
j++;
}
k++;
}
int a;
for(a=0 ; a<arr_length-num0s ; )
{
if(arr[num0s+a]!=a+1)
{
int temp=arr[num0s+a];
arr[num0s+a]=arr[num0s+temp-1];
arr[num0s+temp-1]=temp;
}
else
{
arr[num0s+a]=1;
a++;
}
}
}
int main()
{
int arr[17]={0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0};
int size=17;
binarySort(arr, size);
printf("\n--------------------------\n");
print_arr(arr, size);
return 0;
}