#include <iostream>
using namespace std;
void BinaryInsertionSort(int *a,int n)
{
int left,mid,right,p;
for(p=1;p<n;p++)
{
int temp=a[p];
left=0;
right=p-1;
while(left<=right)
{
mid=(left+right)/2;
if(a[mid]>temp)
{
right=mid-1;
}
else
{
left=mid+1;
}
}
for(int i=p-1;i>=left;i--)
{
a[i+1]=a[i];
}
a[left]=temp;
}
}
void InsertionSort(int a[],int n)
{
int p,i;
for(p=1;p<n;p++)
{
int temp=a[p];
i=p-1;
while(i>=0&&(a[i]>temp))
{
a[i+1]=a[i];
i--;
}
a[i+1]=temp;
}
}
void BubbleSort(int a[],int n)
{
int flag=0;
for(int i=0;i<n;i++)
{
flag=0;
for(int j=1;j<n-i;j++)
{
if(a[j]<a[j-1])
{
flag=1;
std::swap(a[j],a[j-1]);
}
}
if(!flag)
return;
}
}
void show(int *a,int n)
{
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
int main()
{
int a[7]={2,4,1,6,5,3,8};
InsertionSort(a,7) ;
show(a,7);
int b[7]={2,4,1,6,5,3,8};
BinaryInsertionSort(b,7) ;
show(b,7);
int c[7]={2,4,1,6,5,3,8};
BubbleSort(c,7) ;
show(c,7);
return 0;
}