比较相邻的元素。如果第一个比第二个大,就交换他们两个,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,最后的元素应该会是最大的数。
如果有长度为3的数组a,三个数组元素a[0]
,a[1]
,a[2]
,编写程序求这3
个数组元素中的最大者。 解题思路: 1)如果 a[0]>a[1]
,a[0]
和a[1]
交换,a[1]
是a[0]
、a[1]
中的大者。 2)如果 a[1]>a[2]
,a[1]
和a[2]
交换,a[2]
是三者中最大者。
用if
语句表示如下:
if(a[0]>a[1])
{
t=a[0]; a[0]=a[1]; a[1]=t; //a[0]和a[1]交换
}
if(a[1]>a[2])
{
t=a[1]; a[1]=a[2]; a[2]=t; //a[1]和a[2]交换
}
编程要求
现在有长度为n
个整型数组a
,用交换法求数组中的最大值的解题思路如下: 第1
步:如果 a[0]>a[1]
,a[0]
和a[1]
交换,a[1]
是a[0]
、a[1]
中的大者。 第2
步:如果 a[1]>a[2]
,a[1]
和a[2]
交换,a[2]
是前三个数组元素中最大者。 …… 第n-1
步:如果 a[n-2]>a[n-1]
,a[n-2]
和a[n-1]
交换,a[n-1]
是n
个数组元素中最大者。
#include <stdio.h>
int main ()
{
int n,i,t;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
if(i!=0&&a[i]<a[i-1])
{
t=a[i];
a[i]=a[i-1];
a[i-1]=t;
}
}
for(i=0;i<n;i++)
{
printf("%d",a[i]);
if(i!=n-1)
printf(" ");
}
return 0;
}