给定一个数组,求数组中的最大值。

用假设法可解,思路是,把数组中随便一个元素设置为最大值,然后让其它元素和它比,如果比当前最大值大,那么最大值就被设置为这个元素,这个过程有点类似打擂台,共有N个人打擂台,其中一个人说,我是最厉害的,然后后面一个人把他打败了,它就编程最大的了,前面就被淘汰了,擂台上始终是当前最厉害的,那么最后留在擂台上的就是最厉害的。

想出假设法的人真的很聪明啊,我怎么想不到呢?

假设是4个整型变量,那么有以下代码

int a,b,c,d

int max=a;

if(b>=max)

max=b;

if(c>=max)

max=c;

if(d>=max)

max=d;

发现没有,这三段if代码很相似,但似乎不会有简便的办法了。

如果把这四个变量放到数组中,那么我们可能会写出这样的代码:

int main(void)
{int num[] = { 35,34,67,67};int max = num[3];if (num[0] >= max){max = num[0];}if (num[1] >= max){max = num[1];}if (num[2] >= max){max = num[2];}if (num[3] >= max){max = num[3];}printf("max=%d",max);return 1;
}

  

可以发现几段if代码就是数组索引不一样,其它地方都一样,如下图:

数组索引是一个常数,我们可以用一个变量i来代替它,然后让i的值从0开始,每次加1这样变化,for循环正是有这样的功能。

于是代码可以被优化成下面这样。

int main(void)
{int num[] = { 35,34,67,67};int max = num[3];for (int i = 0; i <= 3; i++){if (num[i] >= max){max = num[i];}}printf("max=%d",max);return 1;
}

  

数组从某些角度讲有优化代码的功能。

转载于:https://www.cnblogs.com/yfish/p/9807235.html

假设法求最大值和数组的优点相关推荐

  1. web前端html怎么求最大值和最小值,求js数组的最大值和最小值的四种方法

    给定数组[54,65,43,21,12,34,45,58,97,24],求其最大值和最小值? 定义数组 var ary = [54,65,43,21,12,34,45,58,97,24]; 1.字符串 ...

  2. 数组子数组求最大值1

    输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值. 实验思路: 从第一个元素开始循环,在嵌套另一个循环,从每个元素开始 ...

  3. 软件工程——求二维数组所有子矩阵的和的最大值

    题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为 ...

  4. Console-算法[]-数组求最大值和最小值(只能遍历一次)

    ylbtech-Arithmetic:Console-算法[]-数组求最大值和最小值(只能遍历一次) 1.A,Demo(案例) Console-算法[]-数组求最大值和最小值(只能遍历一次) 1.B, ...

  5. python求数组最大值_Python算法与数据结构--求所有子数组的和的最大值

    Python算法与数据结构--求所有子数组的和的最大值 玄魂工作室秘书 玄魂工作室 昨天 题目:输入一个整形数组,数组里有正数也有负数.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. ...

  6. 输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)

    输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).(奇安信-wab前端) 例如,输入的数组为{ 1.-2.3.10. ...

  7. 数组求和,求平均数,求最大值和最小值

    1.定义数组 var arr=[]; var arr=new Array(); 2.数组赋值 var arr=[]; arr[0]=10;//把数字10赋值到数组索引为0的位置上 arr[1]=20; ...

  8. 数组中求最大值的方法

    (1)for 循环:数组中循环求最大值 var arr=[1,5,9,0,1,-3,-98,100,80]; function fn(){var max=arr[0];for(var i=0;i< ...

  9. 定义一个二维数组,写函数来实现对该二维数组求最大值。(要求,用行指针为函数形参)

    // 121219 上机任务3.cpp : 定义控制台应用程序的入口点. // /* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * ...

  10. (1~2):C实现数组求和,求平均值,求最大值,最小值

    1.求和.求平均值 #include<stdio.h>int main() {int arr[5]={1,2,3,4,5};int sum=0;for(int i=0;i<5;i++ ...

最新文章

  1. CSS sprites
  2. 使用Axis开发Web Service程序
  3. linux cenots 查看cpu核数
  4. makefile多目录多文件
  5. 两数之和-给定一个整数数组nums和一个目标值target,请你在该数组找出和为目标值的那两个整数,并返回他们的数组下标,你可以假设每种输入只会对应一个答案。但是,数组同一个元素不能使-python
  6. 52 - 算法 - LeetCode 20 数据结构类 stack
  7. slf4j使用(二)
  8. 安装navicat之后双击就会闪退_win2012,2016 能安装oracle 10g吗?
  9. layui 监听表单提交form.on(‘submit(sub)‘,function (){}) ajax请求失败问题
  10. Oracle 11g RAC 安装数据库软件找不到节点的解决
  11. Unity性能优化之Resources System
  12. 【python三维深度学习】python三维点云从基础到深度学习
  13. 斗牛(牛牛)概率计算器
  14. CSS3中的元素过渡属性transition
  15. Linux,Xshell
  16. Linux:error while loading shared libraries: /usr/lib/xx.so.xx: file too short
  17. iOS 字符串转ascii码,字符串转NSData
  18. Lost connection to MySQL server during query问题
  19. libpng16.so.16错误
  20. python自动化输入文本_python输入文本

热门文章

  1. pythonATM,购物车项目实战5-数据处理层
  2. poythoncode-实战2--常用方式for、while、dict、list
  3. 最常用计算机文件后缀名,windows系统文件后缀(扩展名)简单介绍,电脑知识普及...
  4. kali升级软件_KALI更新软件源地址
  5. python中capital是什么意思_Capital是什么意思?
  6. python、声明全局变量的关键字是_python基础之全局变量与global关键字
  7. 软件的接口设计图_软件工程中的分析、设计与实例
  8. DOM中cloneNode的使用之旅
  9. 云服务下的安全特点及基础防护
  10. servletconfigservletcontext