41 4 3 2样例输出:1 2 3 4#includeint main(){int n,i,j,a[100],temp;while(scanf("%d",&n)!=EOF){for(i=0;iscanf("%d",&a[i]);for(i=1;i{if(a[i-1]>a[i]){temp=a[i];for(j=i-1;j>=0&&tempa[j+1]=a[j];a[j+1]=temp;}}for(i=0;iPRintf("%d ",a[i]);printf("/n");}return 0;}严蔚敏课本中【直接插入排序】代码先须判断1起始情况下是否需要移动for(i=1;i<n;i++){if(a[i]<a[i-1]){temp=a[i];a[i]=a[i-1];for(j=i-2;a[j]>temp&&j>=0;--j)a[j+1]=a[j];a[j+1]=temp;}}如果不想判断,也可以,而且代码更简洁,如下:for(i=1;i<n;++i){temp=a[i];for(j=i;j>0&&temp<a[j-1];j--)a[j]=a[j-1];a[j]=temp;}
新闻热点
疑难解答