#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;k
a[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<