现在有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;一定要注意三目运算符的判断条件的形式
可以参考下面带 * 号的注释
public static void heapify2(int arr[], int index, int heapSize){int left &#61; 2 * index &#43; 1;while (left < heapSize){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;}}