用C语言输出数组中的最大数以及位置,C语言之数组的另一种有趣的排列方法,以及输出数组中最大的元素的方法...

原标题:C语言之数组的另一种有趣的排列方法,以及输出数组中最大的元素的方法

上一讲呢我们介绍了数组的“冒泡排序”法,这一节我们在来看看数组的另一种排列方式-“选择排序方法”和用“打擂台”的方法来求出数组的最大值。

我们先来看看选择排序法:

选择排序法是以冒泡排序法为基础,进化出来的更有效率的数组排序方法。

我们先来看一个例子,我们从小到大排列5、3、4、1、2这5个数。

代码如下:

/*数组元素从小到大进行排序*/

#include

int main()

{

int a[5], i, j=1,min;//i控制的是数组的下标,j代表的是i的下一个元素,k控制的是最小的值

printf("请输入数组元素:\n");

/*以下循环代表的是数组元素的输入*/

for (i = 0; i < 5; i++)

{

scanf_s("%d", &a[i]);

}

/*以下循环是排序循环*/

for (i = 0; i < 5; i++)

{

for (j= i+1; j < 5; j++)//j代表的是数组元素a[i]的下一个元素

{

if (a[i] > a[j])

{

min = a[j];

a[j] = a[i];

a[i] = min;

}

/*大家一定要搞懂以上循环的意义*/

}

}

/*以下循环是数组元素的输出*/

for (i = 0; i < 5; i++)

{

printf("%d", a[i]);

}

return 0;

}

dbde18d2c4f85721fe2a7881b3236dcb.png

我们来看看程序具体的运行过程是怎样的:

首先,程序通过scanf_s语句(scanf_s语句是visual stdio 2019版本的编译器中的输入语句,像VC++6.0和DEVC++编译器所用的输入语句是scanf)从键盘获取数组的元素。

for(i=0;i<5;i++)这层循环先执行,此时的i=0,选出a[0]这个元素与后面的元素比较。

(所谓的选择排序就是先选择一个数,用这个数与其他数进行比较,如果这个数小于(大于)其他数,就交换位置,否则就不动,继续与下一个数进行比较。)

程序在向后执行,到了for(j=i+1;j<5;j++)这层循环上了。

此时的j=1,这是开始执行if语句进行比较,将较小的数向前移动,较大的数向后移动。

这一个被选出来的元素a[0]和剩余的数比较完成后,在开始第二个数的比较,一次类推····

直到比较完毕。

选择排序法的执行效率要比冒泡排序法高。

我们介绍完了这一种数组的排序方式之后,我们在来介绍一下如何在数组中求出其最大值。

这个问题我们使用的“打擂台”的方法。

和选择排序法类似,“打擂台”法也是先选出一个数,假定它是最大的,即这个数是擂主,其他的数依次与擂主进行比较,如果其他的某数大于这个擂主,那么那个数将成为新的擂主,最后输出这个数就行了。

我们来看一个例子,还是用5、3、4、1、2这5个数,要求我们编写一个程序输出这五个数中最大的数,这和我们在日常考试中碰到的输出某个班级的最高分数类似。

代码如下:

#include

int main()

{

int a[5], i,max;

/*这个循环是控输入数组元素*/

printf("请输入数组的元素:\n");

for (i = 0; i < 5; i++)

{

scanf_s("%d", &a[i]);

}

max = a[0];//我们假定a[0]是最大的元素

/*以下循环是为了比较出数组中最大的元素*/

for (i = 0; i < 5; i++)

{

if (a[i + 1] > max)

{

max = a[i + 1];

}

}

/*最后输出这个比较出来的值就可以了*/

printf("数组中最大的元素是:%d\n",max);

return 0;

}

1446f60a65726bbe5955274b34ebb4cb.png



好了,今天的讲述就到这里了。返回搜狐,查看更多

责任编辑:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值