前言
提示:根据算法与数据结构来寻找最大值与次大值并输出,在主函数中调用该方法时只需要传入数组和数组元素个数即可。
c语言寻找最大值和次大值
1.源代码
代码如下(示例):
#include<stdio.h>
void max12(int a[],int n);
int main(){
int a[]={1,3,42,5,56,32,22};//可以更换其他数组
int n=7;//n为数组元素个数,也可以考虑在方法中使用[数组].length
max12(a,7);
return 0;
}
//该处比较了n-1次
void max12(int a[],int n){
int max1=a[0],max2,i,k,temp;
for(i=1;i<=n;i++){
if(a[i]>max1){
max1=a[i];
k=i;
}
}
//将数组第一个元素与最大值调换位置
temp=a[0];
a[0]=max1;
a[k]=temp;
max2=a[1];
//该处比较了n-2次,因为i从2开始取值
for(i=2;i<=n;i++){
if(a[i]>max2){
max2=a[i];
k=i;
}
}
//将数组第二大值与数组第二个元素调换位置
temp=a[1];
a[1]=max2;
a[k]=temp;
//return {a[0],a[1]};
//该方法最终比较的次数为n-1+n-2次,为2n-3次
printf("%d %d",a[0],a[1]);
}
该方法共比较了n-1+n-2次,共2n-3次,所以时间复杂度为2n-3