举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java气泡法 JavaFX 气泡

java气泡法 JavaFX 气泡

2023-03-07 05:18 Java教程

java气泡法 JavaFX 气泡

java气泡法

Java气泡法是一种排序算法,它是一种比较相邻元素,并交换位置的方法。它的基本思想是:通过多次遍历数列,将最大或最小的元素“浮”到数列的顶端。

Java气泡法的基本步骤如下:

1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 
2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 
3. 针对所有的元素重复以上的步骤,除了最后一个。 
4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

Java气泡法可以用来快速地将数字序列中的数字进行升序或者降序排序。它也可以用来找出数字序列中最大或者最小值。

Java气泡法在时间复杂度上表现不佳,因为它要遍历所有元素并检测所有可能出现在当前位置上的元素之间是否存在交换可能性。因此时间复杂度为O(n^2) 。

JavaFX 气泡图

JavaFX教程 - JavaFX气泡图


气泡图是一个双轴图表,为一系列数据点绘制气泡。

创建气泡图

要创建气泡图,我们创建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);

上面的代码生成以下结果。

null

例子

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;
    }
}

上面的代码生成以下结果。

null


阅读全文
以上是编程学为你收集整理的java气泡法 JavaFX 气泡全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部