热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用三目运算符求出三个值的max,min和mid值

现在有a,b,c三个值,请比较他们的大小?易于理解版publicstaticintfindMax(inta,intb,intc){aab?a:b

现在有a, b, c三个值,请比较他们的大小?

易于理解版

public static int findMax(int a, int b, int c)
{a = a > b ? a : b;a = a > c ? a : c;return a;
}

三目运算符进阶版

public static int findMax(int a, int b, int c)
{a = (a > b ? a : b) > c ? (a > b ? a : b) : c;return a;
}

利用三目运算符计算三个数的中间值

思想:
先用三目运算符分别计算出max和min,再用a, b, c的和减去max和min就可以得到中间值

public static int findMiddle(int a, int b, int c)
{int max, min, mid, sum;max &#61; (a > b ? a : b) > c ? (a > b ? a : b) : c;min &#61; (a < b ? a : b) < c ? (a < b ? a : b) : c;mid return (a &#43; b &#43; c) - max - min;
}

三目运算符的延申

在堆排序中&#xff0c;进行heapify(堆化)操作时&#xff0c;需要判断左右孩子结点是否越界&#xff0c;即存在逻辑与操作时&#xff0c;一定要注意三目运算符的判断条件的形式

可以参考下面带 * 号的注释

// 以非递归的方式实现heapify函数public static void heapify2(int arr[], int index, int heapSize){int left &#61; 2 * index &#43; 1;while (left < heapSize){// 先选出左右孩子结点中较大的那个&#xff0c;将比较大的孩子的下标赋值给largest&#xff0c;但是在比较之前要确认右孩子结点是否存在 // * 以下语句不可以写成 int largest &#61; left &#43; 1 arr[left &#43; 1] ? left : left &#43; 1;int largest &#61; left &#43; 1 < heapSize && arr[left &#43; 1] > arr[left] ? left &#43; 1 : left;// 再将父节点和值较大的那个孩子结点比较largest &#61; arr[largest] > arr[index] ? largest : index;if (index &#61;&#61; largest) break;swap(arr, index, largest);index &#61; largest;left &#61; 2 * index &#43; 1;}}


推荐阅读
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • JVM:33 如何查看JVM的Full GC日志
    1.示例代码packagecom.webcode;publicclassDemo4{publicstaticvoidmain(String[]args){byte[]arr ... [详细]
  • 介绍平常在多线程开发中,总避免不了线程同步。本篇就对net多线程中的锁系统做个简单描述。目录一:lock、Monitor1:基础 ... [详细]
  • PriorityQueue源码分析
     publicbooleanhasNext(){returncursor&amp;amp;lt;size||(forgetMeNot!null&amp;amp;am ... [详细]
  • 开发笔记:快速排序和堆排序
    本文由编程笔记#小编为大家整理,主要介绍了快速排序和堆排序相关的知识,希望对你有一定的参考价值。快速排序思想:在partition中,首先以最右边的值作为划分值x,分别维护小于 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了如何通过维持两个堆来获取一个数据流中的中位数。通过使用最大堆和最小堆,分别保存数据流中较小的一半和较大的一半数值,可以保证两个堆的大小差距为1或0。如果数据流中的数量为奇数,则中位数为较大堆的最大值;如果数量为偶数,则中位数为较大堆的最大值和较小堆的最小值的平均值。可以使用优先队列来实现堆的功能。本文还提供了相应的Java代码实现。 ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
  • Python中程序员的面试题有哪些
    小编给大家分享一下Python中程序员的面试题有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有 ... [详细]
  • Apple iPad:过渡设备还是平板电脑?
    I’vebeenagonizingoverwhethertopostaniPadarticle.Applecertainlydon’tneedmorepublicityandthe ... [详细]
  • MySQL 运行原理 [数据页]
    文章根据《MySQL技术内幕:InnoDB存储引擎(第二版)》、掘金小册《MySQL是怎样运行的:从根儿上理解MySQL》两本书得到的总结文章参考淘宝数据库内核组月报文章中的图均截 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有