Metodo Burbuja
Metodo Burbuja
Metodo Burbuja
Ingeniería en Computación
Materia:
Estructura de datos
Profesor:
Blanco Bautista Roberto
Grupo:
1311
Método de burbuja
Ejemplo:
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.fxml.FXMLLoader;
@Override
try {
Pane root =
(Pane)FXMLLoader.load(getClass().getResource("VistaBurbuja.fxml"));
scene.getStylesheets().add(getClass().getResource("application.css").toExternalFo
rm());
//primaryStage.initStyle(StageStyle.UNDECORATED);
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
launch(args);
VistaBurbujaController
package application;
import java.net.URL;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import fes.aragon.utilerias.dinamicas.listasimple.ListaSimple;
import javafx.application.Platform;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;
@FXML
@FXML
@FXML
@FXML
final String[] color = {"-fx-bar-fill: green", "-fx-bar-fill: red", "-fx-bar-fill: blue", "-fx-
bar-fill: yellow"};
numerosAleatorios();
series.getData().clear();
series.getData().add(new XYChart.Data<>(String.valueOf(i),
lista.obtenerNodo(i)));
series.getData().get(i).getNode().setStyle(color[new
Random().nextInt(4)]);
if(scheduledExecutorService != null) {
scheduledExecutorService.shutdown();
@FXML
scheduledExecutorService =
Executors.newSingleThreadScheduledExecutor();
scheduledExecutorService.scheduleAtFixedRate(()->{
Platform.runLater(()->{
lista.asignar(aux, j);
String tmpEstilo =
series.getData().get(j).getNode().getStyle();
String tmpEstiloDos =
series.getData().get(j-1).getNode().getStyle();
series.getData().get(j).getNode().setStyle(tmpEstiloDos);
series.getData().get(j-
1).getNode().setStyle(tmpEstilo);
series.getData().get(j).setYValue(lista.obtenerNodo(j));
series.getData().get(j-
1).setYValue(lista.obtenerNodo(j-1));
break;
});
}, 0,1,TimeUnit.SECONDS);
@FXML
scheduledExecutorService.shutdown();
Platform.exit();
@Override
numerosAleatorios();
xAxis.setLabel("Time/s");
xAxis.setAnimated(false);
yAxis.setLabel("Value");
yAxis.setAnimated(false);
//area.setTitle("Metodo Burbuja");
area.setAnimated(false);
area.getData().add(series);
series.getData().add(dato);
dato.getNode().setStyle(color[new Random().nextInt(4)]);
}
private void numerosAleatorios() {
lista.agregarEnCola(rd.nextInt(200));
Fes/aragon/utilerias/dinámicas/listasimple
ListaSimple
package fes.aragon.utilerias.dinamicas.listasimple;
// eliminar cola?
// eliminar cabeza?
// agregar en la cabezona
// agregar en la colota
/*
* quien esta "atras de nosotros" podemos saber quien esta adelante gracias
al
*/
/*
* "nodo siguiente" al nodo actual antes de hacer el cambio //para tener una
* anterior, que en este caso siempre va a ser la cabeza, por que estamos
*
*/
// el jodido constructor
public ListaSimple() {
cabeza = null;
cola = null;
// se "recorre"
// de hacer el cambio
// para tener una referencia del enlace que se tiene, por que si no se
le diera
// el siguiente
// si es el primer nodo que se agrega cola tiene que ser igual a null
// por lo que podemos deducir que si cola sigue siendo null solo hemos
agregado
// un dato
if (cola == null) {
cola = cabeza;
longitud++;
} else {
cola.setSiguiente(new Nodo<E>(dato));
cola = cola.getSiguiente();
longitud++;
System.out.println(temp.getDato());
if (cabeza != null) {
borrado = true;
longitud--;
cabeza = cabeza.getSiguiente();
borrado = true;
longitud--;
} else {
if (temp != null) {
borrado = true;
longitud--;
prd.setSiguiente(temp.getSiguiente());
if (temp == cola) {
cola = prd;
return borrado;
if (longitud < 0) {
longitud = 0;
return longitud;
if (cabeza != null) {
if (cabeza == cola) {
longitud--;
} else {
cabeza = cabeza.getSiguiente();
longitud--;
if (cabeza != null) {
if (cabeza == cola) {
cabeza = cola = null;
longitud--;
} else {
Nodo<E> temp;
temp.setSiguiente(null);
cola = temp;
longitud--;
temp = cabeza;
if (temp != null) {
return temp.getDato();
} else {
return null;
int indice;
temp = cabeza;
if (temp != null) {
return indice;
} else {
return -1;
//
if(lista.esVacia()) {
return isInList;
}
for(int i=0; i < lista.longitud; i++) {
if(dato == lista.obtenerNodo(i)) {
isInList = true;
return isInList;
if (cabeza != null) {
borrado = true;
longitud--;
} else if (indice == 0) {
cabeza = cabeza.getSiguiente();
borrado = true;
longitud--;
} else {
int contador = 1;
for (prd = cabeza, temp =
cabeza.getSiguiente(); contador < indice; prd = prd
.getSiguiente(), temp =
temp.getSiguiente(), contador++)
if (temp != null) {
borrado = true;
longitud--;
prd.setSiguiente(temp.getSiguiente());
if (temp == cola) {
cola = prd;
return borrado;
// REVISAR ******************
if (indice == 0) {
this.agregarEnCabeza(dato);
seInserto = true;
} else {
int contador = 0;
longitud++;
seInserto = true;
return seInserto;
temp = cabeza;
if (temp != null) {
temp.setDato(dato);
return true;
} else {
return false;
if (!todos) {
if (temp.getDato().equals(dato)) {
temp.setDato(nuevoDato);
return;
} else {
if (temp.getSiguiente().equals(dato)) {
temp.setDato(nuevoDato);
return;
}
public E obtenerCabeza() {
return cabeza.getDato();
public E obtenerCola() {
return cola.getDato();
Nodo
package fes.aragon.utilerias.dinamicas.listasimple;
private E dato;
//al principal problema que tienen las listas *vea clase ListaSimple*
this.dato = dato;
}
this.dato = dato;
this.siguiente = siguiente;
public E getDato() {
return dato;
}
public void setDato(E dato) {
this.dato = dato;
return siguiente;
this.siguiente = siguiente;
Conclusión
Se puede concluir que el método es sencillo de usar además de que se
puede utilizar en diversos aspectos en un programa en donde no se está
ordenando.