c语言如何输出数组最大值和最小值,C语言输出数组中最大和次大的数

201610181557196870.jpg

码农公社  210.net.cn  210= 1024  10月24日一个重要的节日--码农(程序员)节

第一种方法:

采用排序,进行两趟冒泡排序,当数据基本有序(升序)且不要求按照原有数据中的顺序输出时可选择此方法

void select_1(int a[],int length,int *min1,int *min2){

int i,j;

bool change = true;

for(i = 1;i <= 2 && change;i++){

change = false;

for(j = 0;j 

if(a[j] > a[j+1]){

int temp;

temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

change = true; //如果交换,说明没有排好序

}

}

}

*min1 = a[length - 2];

*min2 = a[length - 1];

}

第二种方法:

输出的数据按照原有数据中的顺序排列

void select_2(int *x1,int *x2,int x){

if(*x1 >= *x2){

if(x > *x2){

*x2 = x;

}

}

else{//x1 

if(x >= *x2){

*x1 = *x2;

*x2 = x;

}

else if(x > *x1 && x 

*x1 = *x2;

*x2 = x;

}

}

}

测试数据:

懒得输入,就直接初始化了

注意:在第二次使用同一组数据时,需要重新输入或者定义另一个数组赋初值,切不可直接使用,因为冒泡排序已经改变了原有数据的顺序,也不可使用 a[10] = {2,3,1,4,7,3,5,1,6,0}; 这样的赋值语句,因为这种使用方式只有在初始化时可以这样写,在其他地方不可以,会出错,出错的原因是后面使用的不是初始化,并且a[10]表示一个值,而不是一组数,如果数组长度为10,a[10]是一个出界的数组值,也会导致出错。

int main(){

int a[10] = {2,3,1,4,7,3,5,1,6,0};

int b[10] = {2,3,1,4,7,3,5,1,6,0};

int min1,min2;

select_1(a,10,&min1,&min2);

printf("不保证顺序,只是找出最大和次大的值\n");

printf("min1: %d\nmin2: %d\n",min1,min2);

int i,j;

min1 = b[0];

min2 = b[1];

for(i = 2;i 

select_2(&min1,&min2,b[i]);

}

printf("大小保持原有顺序不变\n");

printf("min1: %d\nmin2: %d\n",min1,min2);

return 0;

}

输出结果截图:

cfe4a2d611ece71e43530c93659d9249.png

源自https://www.cnblogs.com/shelly-blog/p/11348496.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值