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;
}
新聞熱點
疑難解答