欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

不使用比较运算符构造max()和min()

程序员文章站 2022-06-07 14:38:53
...

题目要求

不直接使用比较运算符:>、<、>=、<=、==、!= ,不使用内置函数Math.max()、Math.min(),自己构造求解求解最大值和最小值的函数。

分析

证明如下:
不使用比较运算符构造max()和min()

据上图证明的式子,就可以构造出所需要的max()和min()了呢。

Java编程实现

import java.util.Scanner;

public class MaxAndMin {

    private static int max (int a, int b) {
        return (a+b+Math.abs(a-b))/2;
    }

    private static int min (int a, int b) {
        return (a+b-Math.abs(a-b))/2;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt(), b = scanner.nextInt();
        System.out.println(a +"和" + b + "的最大值是:" + max(a, b));
        System.out.println(a +"和" + b + "的最小值是:" + min(a, b));
        scanner.close();
    }

}

测试举例

不使用比较运算符构造max()和min()

java.lang.Math的做法

很简单啦,就没上面这么绕了……

max():

@HotSpotIntrinsicCandidate
public static int max(int a, int b) {
    return a >= b ? a : b;
}

min():

@HotSpotIntrinsicCandidate
public static int min(int a, int b) {
    return a <= b ? a : b;
}
相关标签: # 算法入门