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;
}
新闻热点
疑难解答