老师,关于2-11变成联系的问题

老师,关于2-11变成联系的问题

我的代码是哪里出错了呢,为什么不能求出最大值。

#include <iostream>
#include <string>
using namespace std;
int max(int a[], int len)
{
	int i, j, s = 0;
	for (i = 0; i < len; i++)
	{
		for (j = 0; j < len - 1 - i; j++)
		{
			if (a[i] > a[i+1])
			{
				s = a[i];
				a[i] = a[i+1];
				a[i+1] = s;
			}
		}
	}
	return s;
}
int main()
{

	int a[5] = { 4,5,2,6,9 };
	
	cout << "数组的最大值为" << max(a,5) << endl;
	return 0;
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
guly 2018-08-20 17:33:27

你好,您的循环表示的是冒泡排序每次输出相邻两位的最大数,建议参考代码如下:

#include <iostream>
#include <string>
using namespace std;
int max(int a[], int n)
{
    int s = a[0];
     
    for(int i=1; i<n; i++)
    {
        if(a[i] > s)
        {
            s = a[i];
        }
    }
 
    return s;
}
 
int main() 
{
      int a[5] = { 4,12,2,6,9 };
 
    cout<<"数组的最大值为:"<<max(a, 5)<<endl;
 
    return 0;
}

如果解决您的问题请采纳,祝学习愉快!

  • 提问者 charlottechou #1
    可我还是不懂为什么这个冒泡排序得不到正确结果,二维数组的可以
    2018-08-20 20:06:59
  • 好帮手慕查理 回复 提问者 charlottechou #2
    您好,冒泡排序是将数据进行排序,如果使用冒泡排序获取最大值需要将数组按从大到小顺序完成,然后取下标为0的数据即可。且取最大值不需要使用冒泡排序,使用冒泡排序只会增加程序的繁琐性。取最大值思路:拿出数组中下标为0的数据,然后for循环,在循环中进行比较,当之后的数据大于下标为0的数据时,就将其赋值给变量,一直到循环结束,就能返回最大值。具体代码老师已给出,可参考。祝学习愉快!
    2018-08-21 10:06:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
C++零基础入门 热门编程语言 二级考试必备
  • 参与学习       529    人
  • 提交作业       110    份
  • 解答问题       593    个

无论您是零基础、还是想晋升,亦或是想转型,C++无疑都是最佳选择。本路径共分为基础语法、指针与引用、面向对象三大模块,为你开启入门C++编程的大门!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师