4.1小节:排序(对应编号581)
A题 排序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int temp,k,j,i,n,a[100];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++) scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(a[j]<a[k]) k=j;
}
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
for(i=0;i<n;i++) printf("%d ",a[i]);
printf("\n");
}
return 0;
}
总结:输入多组数据用while控制,本题选用的排序算法是选择排序。
B题 特殊排序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int temp,i,j,n,a[1000];
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++) scanf("%d",&a[i]);
if(n==1)
{
printf("%d\n-1\n",a[0]);
}
else
{
for(i=1;i<n;i++)
{
temp=a[i];
j=i;
while(j>0&&temp<a[j-1])
{
a[j]=a[j-1];
j--;
}
a[j]=temp;
}
printf("%d\n",a[n-1]);
for(i=0;i<n-2;i++) printf("%d ",a[i]);
printf("%d\n",a[n-2]);
}
}
return 0;
}
总结:输入数据需要while控制,本题选用的排序算法是插入排序。