请用【java】帮我写一段快排代码,并帮我讲解下实现逻辑:自定义方法, 分别求三角形、矩形和圆的面积。在主函数中调用自定义方法, 并返回面积
时间: 2024-09-08 18:00:51 浏览: 25
在Java中,快速排序是一种常用的高效排序算法,以下是快速排序的实现代码:
```java
public class QuickSort {
public void quickSort(int[] arr, int low, int high) {
if (arr == null || arr.length <= 1)
return;
if (low < high) {
// 找到基准元素并分割数组
int pivotIndex = partition(arr, low, high);
// 对基准元素两侧的子数组递归进行快速排序
quickSort(arr, low, pivotIndex - 1); // 左侧
quickSort(arr, pivotIndex + 1, high); // 右侧
}
}
private int partition(int[] arr, int low, int high) {
int pivot = arr[high]; // 最后一个元素作为基准
int i = low - 1; // 小于基准的元素索引
for (int j = low; j < high; j++) {
if (arr[j] <= pivot) {
i++;
// 交换元素
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 将基准放在正确的位置上
int temp2 = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp2;
return i + 1;
}
// 自定义计算形状面积的类
public static class ShapeAreaCalculator {
// 三角形面积
public double triangleArea(double base, double height) {
return 0.5 * base * height;
}
// 矩形面积
public double rectangleArea(double width, double height) {
return width * height;
}
// 圆的面积
public double circleArea(double radius) {
return Math.PI * Math.pow(radius, 2);
}
}
public static void main(String[] args) {
ShapeAreaCalculator calc = new ShapeAreaCalculator();
double triangleBase = 4.0;
double triangleHeight = 3.0;
double rectangleWidth = 5.0;
double rectangleHeight = 6.0;
double circleRadius = 7.0;
double triangleArea = calc.triangleArea(triangleBase, triangleHeight);
double rectangleArea = calc.rectangleArea(rectangleWidth, rectangleHeight);
double circleArea = calc.circleArea(circleRadius);
System.out.println("Triangle area: " + triangleArea);
System.out.println("Rectangle area: " + rectangleArea);
System.out.println("Circle area: " + circleArea);
}
}
```
这段代码首先实现了快速排序算法,然后创建了一个名为`ShapeAreaCalculator`的类,其中包含了分别计算三角形、矩形和圆形面积的方法。在`main`函数中,我们实例化了这个类,并通过调用各自的方法获取各个图形的面积,最后打印出来。