#include
using namespace std;
void Grial(int a[],int n)
{
int i,j;
i=j=0;
int b[n];
b[0]=a[i];
int k;
for(k=1;ka[k])
{
b[(j-1+n)%n]=a[k];
j=(j-1+n)%n;
}
else
{
i++;
int m;
for(m = i;b[m-1]>a[k];m--)
{
b[(m+n)%n] = b[(m-1+n)%n];
}
b[(m+n)%n]=a[k];
}
}
i++;
k = 0;
do
{
a[k++]=b[(i)%n];
i++;
}while(i%n!=j);
}
int main()
{
int a[]={10,4,2,5,88,1,23};
Grial(a,7);
for(int i=0;i<7;i++)
{
cout<
using namespace std;
//2路插入排序.
void Grial(int a[],int n)
{
int i;
int j;
int b[n];//新開辟的空間用來排序.
b[0]=a[0];
i=1;
j=n-1;
int k;
for(k=1;k(n-j)?1:-1;//比較左邊的長度與右邊的長度,如果左邊的大,則flag記1,else記-1.
if(a[k]>b[i-1])
{
b[i]=a[k];
i++;
}
else if(a[k]b[m+1])
b[m]=b[m+1];
else
{
b[m]=a[k];
break;
}
}
j--;
}
else
{
int m;
for(m = i; b[m-1]>a[k] && m>0;m--)
{
b[m]=b[m-1];
}
b[m]=a[k];
i++;
}
}
j = i;
k=0;
do{
a[k++]=b[(i+n)%n];
i++;
}while((i%n)!=j);
}
int main()
{
int a[]={2,4,77,3,1,6,3,10,8,-1};
Grial(a,10);
for(int i=0;i<10;i++)
{
cout<