问题分析:在这个排序方法中,每轮排序都是按照元素的位置将最大的元素“沉”下去,在第一轮的比较中,先比较第0个和第1个元素的大小,大的元素放到位置1上,然后位置1的元素经循环和位置2的元素比较,大的元素放到位置2上,这样循环一遍后整个数组中最大的元素经过n-1次循环后首先会放到末尾,然后从除了最大的元素外的n-1个元素中找到最大的元素,方法和第一次循环相同,注意第二遍循环的次数为n-2,也就是说每次循环的次数和需要比较的元素个数i是n-i的关系。
问题代码:
#include
int main()
{
int i,j,k,t;
int a[5];
printf("请输入5个数\n");
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(j=0;j<4;j++)
for(k=0;k<4-j;k++)
{
if(a[k]>a[k+1])
{
t=a[k+1];
a[k+1]=a[k];
a[k]=t;
}
}
for(int o=0;o<5;o++)
printf("%d",a[o]);
return 0;
}
问题结果: