Java气泡法是一种排序算法,它是一种比较相邻元素,并交换位置的方法。它的基本思想是:通过多次遍历数列,将最大或最小的元素“浮”到数列的顶端。
Java气泡法的基本步骤如下:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
Java气泡法可以用来快速地将数字序列中的数字进行升序或者降序排序。它也可以用来找出数字序列中最大或者最小值。
Java气泡法在时间复杂度上表现不佳,因为它要遍历所有元素并检测所有可能出现在当前位置上的元素之间是否存在交换可能性。因此时间复杂度为O(n^2) 。
气泡图是一个双轴图表,为一系列数据点绘制气泡。
要创建气泡图,我们创建BubbleChart类,定义水平和垂直轴,并使用添加一个或多个数据系列XYChart.Data类。
//package bubblechartsample; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.chart.BubbleChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.scene.paint.Color; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { stage.setTitle("Bubble Chart Sample"); final NumberAxis xAxis = new NumberAxis(1, 53, 4); final NumberAxis yAxis = new NumberAxis(0, 80, 10); final BubbleChart<Number,Number> blc = new BubbleChart<Number,Number>(xAxis,yAxis); xAxis.setLabel("Week"); xAxis.setTickLabelFill(Color.CHOCOLATE); xAxis.setMinorTickCount(4); yAxis.setLabel("Product Budget"); yAxis.setTickLabelFill(Color.CHOCOLATE); yAxis.setTickLabelGap(10); yAxis.setTickLabelFormatter( new NumberAxis.DefaultFormatter(yAxis,"$ ",null) ); blc.setTitle("Budget Monitoring"); XYChart.Series series1 = new XYChart.Series(); series1.setName("Product 1"); series1.getData().add(new XYChart.Data(3, 35, 2)); series1.getData().add(new XYChart.Data(12, 60, 1.8)); series1.getData().add(new XYChart.Data(15, 15, 7)); series1.getData().add(new XYChart.Data(22, 30, 2.5)); series1.getData().add(new XYChart.Data(28, 20, 1)); series1.getData().add(new XYChart.Data(35, 41, 5.5)); series1.getData().add(new XYChart.Data(42, 17, 9)); series1.getData().add(new XYChart.Data(49, 30, 1.8)); XYChart.Series series2 = new XYChart.Series(); series2.setName("Product 2"); series2.getData().add(new XYChart.Data(8, 15, 2)); series2.getData().add(new XYChart.Data(13, 23, 1)); series2.getData().add(new XYChart.Data(15, 45, 3)); series2.getData().add(new XYChart.Data(24, 30, 4.5)); series2.getData().add(new XYChart.Data(38, 78, 1)); series2.getData().add(new XYChart.Data(40, 41, 7.5)); series2.getData().add(new XYChart.Data(45, 57, 2)); series2.getData().add(new XYChart.Data(47, 23, 3.8)); Scene scene = new Scene(blc); blc.getData().addAll(series1, series2); //scene.getStylesheets().add("bubblechartsample/Chart.css"); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
NumberAxis.DefaultFormatter类将向指定轴的标记添加前缀和后缀。
yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis,"$ ",null));
以下代码行指定了刻度标签的CHOCOLATE颜色。
xAxis.setTickLabelFill(Color.CHOCOLATE); yAxis.setTickLabelFill(Color.CHOCOLATE);
上面的代码生成以下结果。
import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.chart.BubbleChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.scene.chart.XYChart.Series; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { NumberAxis xAxis = new NumberAxis(); NumberAxis yAxis = new NumberAxis(); xAxis.setAutoRanging(false); xAxis.setLowerBound(2011); xAxis.setUpperBound(2016); BubbleChart bubbleChart = new BubbleChart(xAxis, yAxis); bubbleChart.setData(getChartData()); bubbleChart.setTitle("Title"); primaryStage.setTitle("Chart example"); StackPane root = new StackPane(); root.getChildren().add(bubbleChart); primaryStage.setScene(new Scene(root, 400, 250)); primaryStage.show(); } private ObservableList<XYChart.Series<Integer, Double>> getChartData() { double aValue = 1.56; double bValue = 1.06; ObservableList<XYChart.Series<Integer, Double>> answer = FXCollections.observableArrayList(); Series<Integer, Double> aSeries = new Series<Integer, Double>(); Series<Integer, Double> bSeries = new Series<Integer, Double>(); aSeries.setName("A"); bSeries.setName("B"); for (int i = 2011; i < 2016; i++) { double diff = Math.random(); aSeries.getData().add(new XYChart.Data(i, aValue, diff)); aValue = aValue + 10*diff - 5; diff = Math.random(); bSeries.getData().add(new XYChart.Data(i, bValue, diff)); bValue = bValue + 10*diff - 5; diff = Math.random(); } answer.addAll(aSeries, bSeries); return answer; } }
上面的代码生成以下结果。
Java脚本教程 -Java脚本eval ScriptEngine 可以在 String 和java.io.Reader中执行脚本。通过使用Reader,我们可以在网络或文件中...
Java脚本教程 -Java脚本标识符标识符是脚本中变量,函数和标签的名称。Nashorn中的标识符是一个Unicode字符序列,具有以下规则:...
Java Lambda-Java通用方法引用我们可以通过指定实际的类型参数来在方法引用中使用通用方法。语法如下:ClassName::TypeNamemetho...
Java Lambda-Java谓词接口谓词接口包含以下默认和静态方法。我们可以使用NOT,AND和OR方法来创建基于其他谓词的谓词。defaultPre...
Java Lambda表达式上下文lambda表达式可以只在以下四种环境中使用。赋值上下文方法调用上下文返回上下文转换上下文赋值上下文lam...