三分枚举使用Java如何实现?
时间: 2023-02-25 08:02:38 浏览: 64
三分枚举的实现方式与普通的二分枚举类似,只是多了一重循环,分别枚举三个可能的区间。
具体代码实现如下:
```
public int ternarySearch(int left, int right) {
while (right - left > EPS) {
int leftThird = left + (right - left) / 3;
int rightThird = right - (right - left) / 3;
if (function(leftThird) < function(rightThird)) {
left = leftThird;
} else {
right = rightThird;
}
}
return left;
}
```
其中`EPS`是一个精度变量,表示在该精度下两个数值相等,通常取一个非常小的数值,比如`1e-9`。
`function`是需要枚举的函数,该函数的返回值需要是可比较的(例如int、double等)。在上面的代码中,如果`function(leftThird) < function(rightThird)`,则说明最优解在左边,否则最优解在右边。
相关问题
常用的字符枚举类,用java实现。比如百分号、@、英文逗号
Java 中没有提供表示百分号、@、英文逗号等常用字符的枚举类,但我们可以自定义枚举类来表示这些字符,例如:
```java
public enum SpecialChar {
PERCENT("%"),
AT("@"),
COMMA(",");
private final String symbol;
SpecialChar(String symbol) {
this.symbol = symbol;
}
public String getSymbol() {
return symbol;
}
}
```
在这个枚举类中,我们定义了 PERCENT、AT 和 COMMA 三个枚举常量,分别表示百分号、@、英文逗号。每个枚举常量都有一个字符串类型的 symbol 属性,表示对应的字符。
使用时,可以通过枚举常量的 getSymbol() 方法获取对应的字符,例如:
```java
SpecialChar comma = SpecialChar.COMMA;
String symbol = comma.getSymbol(); // 获取英文逗号的字符 ","
```
这样,就可以方便地表示特定的字符类型。
java 枚举类怎么写
Java枚举类可以通过关键字enum来定义,其定义格式为:enum 枚举类名{ 枚举值1, 枚举值2, …… }。每个枚举值都是枚举类的一个实例,可以有自己的属性和方法。下面是一个Java枚举类的示例代码:
```
public enum Weekday {
MONDAY("星期一"),
TUESDAY("星期二"),
WEDNESDAY("星期三"),
THURSDAY("星期四"),
FRIDAY("星期五"),
SATURDAY("星期六"),
SUNDAY("星期日");
private String chineseName;
Weekday(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
```
在上面的代码中,Weekday是一个枚举类,它有7个枚举值,每个枚举值都有一个中文名称。枚举值之间用逗号分隔,最后一个枚举值后面不需要加逗号。每个枚举值都是Weekday类的一个实例,它们的构造函数可以接受参数,这里我们传入了一个中文名称。枚举值可以有自己的属性和方法,这里我们定义了一个getChineseName方法来获取中文名称。