#include<string.h>
using namespace std;
void swap(int &a,int &b)
{
int tmp=a;
a=b;
b=a;
}
void Selectsort(int a[],int n)
{
int i,j;
for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
{
if(a[i]>a[j])swap(a[i],a[j]);
}
for(i=0; i<n; i++)
printf("%d ",a[i]);
puts("");
}
void Bubblesort(int a[],int n)
{
int i,j;
for(i=0; i<n; i++)
for(j=n-1; j>i; j--)
{
if(a[j]<a[j-1])swap(a[j],a[j-1]);
}
for(i=0; i<n; i++)
printf("%d ",a[i]);
puts("");
}
void Insertsort1(int a[],int n)
{
int x,i,j;
for(i=1; i<n; i++)
{
if(a[i-1]>a[i])
{
j=i;
x=a[i];
while(x<a[j-1]&&j>0)
{
a[j]=a[j-1]
j--;
}
a[j]=x;
}
}
for(i=0; i<n; i++)
printf("%d ",a[i]);
puts("");
}
void Insertsort2(int a[],int n)
{
int x,i,j;
for(i=1; i<n; i++)
{
for(j=i-1;j>=0&&a[j]>a[j+1];j--)
swap(a[j],a[j+1]);
}
for(i=0; i<n; i++)
printf("%d ",a[i]);
puts("");
}
void Shellsort(int a[],int n)
{
int i,gap;
for(gap=n/2;gap>0;gap/=2){
for(i=gap;i<n;i+=gap)
{
if(a[i]<a[i-gap]){
int temp=a[i];
int k=i-gap;
while(k>=0&&a[k]>temp){
a[k+gap]=a[k];
k-=gap;
}
a[k+gap]=temp;
}
}
}
for(i=0; i<n; i++)
printf("%d ",a[i]);
puts("");
}
int main()
{
return 0;
}
#include<stdio.h>
void mergearray(int a[],int first,int mid,int last,int temp[] )
{
int i=first,j=mid+1,m=mid,n=last;
int k=0;
while(i<=m&&j<=n)
{
if(a[i]<a[j])
temp[k++]=a[i++];
else
temp[k++]=a[j++];
}
while(i<=m)temp[k++]=a[i++];
while(j<=n)temp[k++]=a[j++];
for(i=0; i<k; i++)
a[first+i]=temp[i];
}
void mergesort(int a[],int first,int last,int temp[])
{
if(first<last)
{
int mid=(first+last)/2;
mergesort(a,first,mid,temp);
mergesort(a,mid+1,last,temp);
mergearray(a,first,mid,last,temp)
}
}