【题目】来源:xmuoj
【分析】题干解释很清楚,按着题干的步骤进行编写即可,注意空两格输出
【核心代码】
#include <iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)cin>>a[i];
for(int i=0;i<n;i++){
printf("Insert element[%d]:\n",i+1);
printf(" Init:");
for(int k=0;k<i;k++){
printf("%d ",a[k]);
}
printf("%d\n",a[i]);
int tmp=a[i];//当前位置的值
int j,num=i;
for(j=i-1;j>=0;j--,num--){
if(tmp<a[j]){
a[num]=a[j];//交换
printf(" Move back:");
for(int k=0;k<i;k++){
printf("%d ",a[k]);
}
printf("%d\n",a[i]);
}
if(tmp>=a[j])break;
}
a[j+1]=tmp;
printf(" Final:");
for(int k=0;k<i;k++){
printf("%d ",a[k]);
}
printf("%d\n",a[i]);
}
}