Skip to content

Commit f27a24f

Browse files
author
javiluli
committed
Agrego nuevo estilo grafico: Pantalla completa; organizo algunas clases y actualizo el README
1 parent ae6382e commit f27a24f

File tree

5 files changed

+94
-144
lines changed

5 files changed

+94
-144
lines changed

README.md

+22-26
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,41 @@
11
# Ordenacion visual de un Array en Java
22

3-
Disponibles hasta 22 algoritmos de ordenacion y 6 variantes para el diseño grafico.
3+
Disponibles hasta 28 algoritmos de ordenacion y 8 variantes para el diseño grafico.
44

5-
La carpeta _data/_ almacena archivos como videos e imagenes que afectan visualmente, no son imprescindibles para el funcionamiento del programa. Para su uso correcto se debe dejar de la misma forma en la que se decarga el repositorio, en una misma carpeta o directorio:
5+
La carpeta _data/_ almacena archivos como videos e imagenes que afectan visualmente, no son necesarios para el funcionamiento del programa. Para su uso correcto se debe dejar de la misma forma en la que se decarga el repositorio, en una misma carpeta o directorio:
66

77
- ordenacionVisual.jar
88
- data/
99

10-
## Descarga
11-
12-
```
13-
git clone https://github.com/javiluli/Ordenacion-visual-Java.git
14-
```
15-
1610
---
1711

18-
## Generar ejecutable
12+
## Descargar y generar ejecutable
1913

2014
```
21-
mkdir -p dist target
15+
git clone https://github.com/javiluli/Ordenacion-visual-Java.git
16+
cd Ordenacion-visual-Java
2217
javac src/Principal/MainAplicacion.java -sourcepath src -d target/
23-
jar -cvfm dist/ordenacionVisual.jar manifest.mf -C target/ ./
18+
jar -cvfm ordenacionVisual.jar manifest.mf -C target/ ./
2419
```
2520

2621
---
2722

28-
## Iniciar aplicacion
29-
30-
```
31-
java -jar dist//ordenacionVisual.jar
32-
```
33-
34-
## Disponibles 22 tipos de algoritmos.
23+
## Disponibles 28 algoritmos de ordenacion.
3524

25+
- Binary insertion sort
3626
- Bitonic sort
27+
- Bogo sort
3728
- [Bubble sort](https://youtu.be/XaJzmQhKbsM)
3829
- [Optimized bubble sort](https://youtu.be/M5o90Ca8kqM)
30+
- Bucket sort
3931
- [Cocktail sort](https://youtu.be/x_2L2QLYZR4)
4032
- [Cycle sort](https://youtu.be/v_hKwLFV5Ck)
4133
- [Gnome sort](https://youtu.be/JnEOrhdxe1w)
34+
- Gravity sort
4235
- [Heap sort](https://youtu.be/IYgJceePT5w)
4336
- [Insertion sort](https://youtu.be/Hfh56tGWVV4)
37+
- Intro sort
38+
- Iterative Merge sort
4439
- Iterative Quick sort
4540
- Merge sort
4641
- Odd Even sort
@@ -56,19 +51,20 @@ java -jar dist//ordenacionVisual.jar
5651
- Stooge sort
5752
- Tim sort
5853

59-
## Disponibles 6 diseños graficos distintos.
54+
---
6055

61-
- Escalera
56+
## Disponibles 8 diseños graficos distintos.
57+
58+
- Barras clasicas
6259
- Piramide horizontal
60+
- Piramide vertical
61+
- Pantalla completa
6362
- Pixel
64-
- Circulo
63+
- Circulo con barras
6564
- Circunferencia
66-
- Espiral
65+
- Espiral con barras
6766

68-
La carpeta _data/_ almacena archivos como videos e imagenes que afectan visualmente, no son necesarios para el funcionamiento del programa. Para su uso correcto se debe dejar de la misma forma en la que se decarga el repositorio, en una misma carpeta o directorio:
69-
70-
- ordenacionVisual.jar
71-
- data/
67+
---
7268

7369
### Bubble optimized Sort
7470

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package EstilosGraficos;
2+
3+
import java.awt.Graphics2D;
4+
5+
public class PantallaCompleta extends EstiloGrafico {
6+
private static final long serialVersionUID = 1L;
7+
8+
public PantallaCompleta() {
9+
}
10+
11+
public PantallaCompleta(int i, int n[], Graphics2D graphics) {
12+
height = (n[i] * BAR_HEIGHT) + BAR_HEIGHT;
13+
xBegin = i + (BAR_WIDTH - 1) * i;
14+
graphics.fillRect(xBegin, 0, BAR_HEIGHT, WIN_HEIGHT);
15+
}
16+
}

src/Principal/DibujarGraficos.java

+17-23
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@
99
import java.util.Vector;
1010

1111
import Adicionales.Delay;
12+
import EstilosGraficos.Barras;
1213
import EstilosGraficos.CirculoBarras;
1314
import EstilosGraficos.CircunferenciaPunteada;
14-
import EstilosGraficos.Barras;
1515
import EstilosGraficos.Espital;
1616
import EstilosGraficos.EstiloGrafico;
17+
import EstilosGraficos.PantallaCompleta;
1718
import EstilosGraficos.PiramideHorizontal;
1819
import EstilosGraficos.PiramideVertical;
1920
import EstilosGraficos.Pixel;
@@ -102,6 +103,7 @@ public Vector<EstiloGrafico> almacenarEstilos() {
102103
estilos.add(new Barras());
103104
estilos.add(new PiramideHorizontal());
104105
estilos.add(new PiramideVertical());
106+
estilos.add(new PantallaCompleta());
105107
estilos.add(new Pixel());
106108
estilos.add(new CirculoBarras());
107109
estilos.add(new CircunferenciaPunteada());
@@ -110,19 +112,24 @@ public Vector<EstiloGrafico> almacenarEstilos() {
110112
}
111113

112114
/**
113-
* Configuraciones.
115+
* Configuraciones sobre el estilo grafico y su sleecion de atributos.
114116
*
115117
* @param opcionGrafico the opcion grafico
116118
* @param graphics the graphics
117119
*/
118120
private void configEstilo(int opcionGrafico, Graphics2D graphics) {
119121
// Cambio la cantidad de elementos que se pintan en pantalla.
120122
// Simepre que sean Objetos Transfomaciones tendran multicolor.
123+
// Siendo un Objeto de la Clase PantallaCompleta siempre tendra multicolor, pero
124+
// no restriccion en la cantidad de barras.
121125
if (almacenarEstilos().get(opcionGrafico) instanceof TransformCentrarGraficos) {
122126
graphics.translate(translateX, translateY);
123127
MainAplicacion.sliderTamBarras.setMinimum(6);
124128
activarMulticolor = true;
125129
MainAplicacion.tglbtnMulticolor.setSelected(activarMulticolor);
130+
} else if (almacenarEstilos().get(opcionGrafico) instanceof PantallaCompleta) {
131+
activarMulticolor = true;
132+
MainAplicacion.tglbtnMulticolor.setSelected(activarMulticolor);
126133
} else {
127134
MainAplicacion.sliderTamBarras.setMinimum(1);
128135
}
@@ -137,27 +144,14 @@ private void configEstilo(int opcionGrafico, Graphics2D graphics) {
137144
*/
138145
private void menuSeleccionGraficos(int opcionGrafico, int i, Graphics2D graphics) {
139146
switch (opcionGrafico) {
140-
case 0:
141-
estiloGrafico = new Barras(i, arrayPrincipal, graphics);
142-
break;
143-
case 1:
144-
estiloGrafico = new PiramideHorizontal(i, arrayPrincipal, graphics);
145-
break;
146-
case 2:
147-
estiloGrafico = new PiramideVertical(i, arrayPrincipal, graphics);
148-
break;
149-
case 3:
150-
estiloGrafico = new Pixel(i, arrayPrincipal, graphics);
151-
break;
152-
case 4:
153-
estiloGrafico = new CirculoBarras(graphics);
154-
break;
155-
case 5:
156-
estiloGrafico = new CircunferenciaPunteada(i, graphics);
157-
break;
158-
case 6:
159-
estiloGrafico = new Espital(i, arrayPrincipal, graphics);
160-
break;
147+
case 0:estiloGrafico = new Barras (i, arrayPrincipal, graphics);break;
148+
case 1:estiloGrafico = new PiramideHorizontal (i, arrayPrincipal, graphics);break;
149+
case 2:estiloGrafico = new PiramideVertical (i, arrayPrincipal, graphics);break;
150+
case 3:estiloGrafico = new PantallaCompleta (i, arrayPrincipal, graphics);break;
151+
case 4:estiloGrafico = new Pixel (i, arrayPrincipal, graphics);break;
152+
case 5:estiloGrafico = new CirculoBarras (graphics); break;
153+
case 6:estiloGrafico = new CircunferenciaPunteada (i, graphics); break;
154+
case 7:estiloGrafico = new Espital (i, arrayPrincipal, graphics);break;
161155
}
162156
}
163157

src/Principal/MainAplicacion.java

+35-95
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public class MainAplicacion extends AdicionalesSorts {
9696
"Barras clasicas",
9797
"Piramide horizontal",
9898
"Piramide vertical",
99+
"Pantalla completa",
99100
"Pixel",
100101
"Circulo con barras",
101102
"Circunferencia",
@@ -411,8 +412,9 @@ public void actionPerformed(ActionEvent e) {
411412
btnInformacion.addActionListener(new ActionListener() {
412413
public void actionPerformed(ActionEvent e) {
413414
JOptionPane.showMessageDialog(frame,
414-
"Visualizador de ordenacion de matrices\n" + " Copyleft 2020\n"
415-
+ " Javiluli\n" + " Fecha de creacion: Julio 1, 2020");
415+
" Visualizador de ordenacion de matrices\n"
416+
+ "Programado por Javier Delgado Rodriguez\n"
417+
+ " Fecha de creacion: Julio 1, 2020");
416418
}
417419
});
418420
panelOpcionesMenu.add(btnInformacion);
@@ -486,93 +488,37 @@ public void menuSorting() {
486488
if (!accederOrdenacion) {
487489
textos();
488490
switch (seleccionAlgoritmo) {
489-
case 0:
490-
sorts = new BinaryInsertion(mainApp, barras.arrayPrincipal);
491-
break;
492-
case 1:
493-
sorts = new Bitonic(mainApp, barras.arrayPrincipal);
494-
break;
495-
case 2:
496-
sorts = new Bogo(mainApp, barras.arrayPrincipal);
497-
break;
498-
case 3:
499-
sorts = new Bubble(mainApp, barras.arrayPrincipal);
500-
break;
501-
case 4:
502-
sorts = new BubbleOptimized(mainApp, barras.arrayPrincipal);
503-
break;
504-
case 5:
505-
sorts = new BucketSort(mainApp, barras.arrayPrincipal);
506-
break;
507-
case 6:
508-
sorts = new Cocktail(mainApp, barras.arrayPrincipal);
509-
break;
510-
case 7:
511-
sorts = new Cycle(mainApp, barras.arrayPrincipal);
512-
break;
513-
case 8:
514-
sorts = new Gnome(mainApp, barras.arrayPrincipal);
515-
break;
516-
case 9:
517-
sorts = new Gravity(mainApp, barras.arrayPrincipal);
518-
break;
519-
case 10:
520-
sorts = new Heap(mainApp, barras.arrayPrincipal);
521-
break;
522-
case 11:
523-
sorts = new Inserccion(mainApp, barras.arrayPrincipal);
524-
break;
525-
case 12:
526-
sorts = new Introsort(mainApp, barras.arrayPrincipal);
527-
break;
528-
case 13:
529-
sorts = new IterativeMerge(mainApp, barras.arrayPrincipal);
530-
break;
531-
case 14:
532-
sorts = new IterativeQuick(mainApp, barras.arrayPrincipal);
533-
break;
534-
case 15:
535-
sorts = new Merge(mainApp, barras.arrayPrincipal);
536-
break;
537-
case 16:
538-
sorts = new OddEven(mainApp, barras.arrayPrincipal);
539-
break;
540-
case 17:
541-
sorts = new Pancake(mainApp, barras.arrayPrincipal);
542-
break;
543-
case 18:
544-
sorts = new Pigeonhole(mainApp, barras.arrayPrincipal);
545-
break;
546-
case 19:
547-
sorts = new Quick(mainApp, barras.arrayPrincipal);
548-
break;
549-
case 20:
550-
sorts = new Radix(mainApp, barras.arrayPrincipal);
551-
break;
552-
case 21:
553-
sorts = new RecursiveBubble(mainApp, barras.arrayPrincipal);
554-
break;
555-
case 22:
556-
sorts = new RecursiveInsertion(mainApp, barras.arrayPrincipal);
557-
break;
558-
case 23:
559-
sorts = new RecursiveSelection(mainApp, barras.arrayPrincipal);
560-
break;
561-
case 24:
562-
sorts = new Selection(mainApp, barras.arrayPrincipal);
563-
break;
564-
case 25:
565-
sorts = new Shell(mainApp, barras.arrayPrincipal);
566-
break;
567-
case 26:
568-
sorts = new Stooge(mainApp, barras.arrayPrincipal);
569-
break;
570-
case 27:
571-
sorts = new Tim(mainApp, barras.arrayPrincipal);
572-
break;
573-
default:
574-
barras.desordenarArray();
575-
break;
491+
case 0:sorts = new BinaryInsertion (mainApp, barras.arrayPrincipal);break;
492+
case 1:sorts = new Bitonic (mainApp, barras.arrayPrincipal);break;
493+
case 2:sorts = new Bogo (mainApp, barras.arrayPrincipal);break;
494+
case 3:sorts = new Bubble (mainApp, barras.arrayPrincipal);break;
495+
case 4:sorts = new BubbleOptimized (mainApp, barras.arrayPrincipal);break;
496+
case 5:sorts = new BucketSort (mainApp, barras.arrayPrincipal);break;
497+
case 6:sorts = new Cocktail (mainApp, barras.arrayPrincipal);break;
498+
case 7:sorts = new Cycle (mainApp, barras.arrayPrincipal);break;
499+
case 8:sorts = new Gnome (mainApp, barras.arrayPrincipal);break;
500+
case 9:sorts = new Gravity (mainApp, barras.arrayPrincipal);break;
501+
case 10:sorts = new Heap (mainApp, barras.arrayPrincipal);break;
502+
case 11:sorts = new Inserccion (mainApp, barras.arrayPrincipal);break;
503+
case 12:sorts = new Introsort (mainApp, barras.arrayPrincipal);break;
504+
case 13:sorts = new IterativeMerge (mainApp, barras.arrayPrincipal);break;
505+
case 14:sorts = new IterativeQuick (mainApp, barras.arrayPrincipal);break;
506+
case 15:sorts = new Merge (mainApp, barras.arrayPrincipal);break;
507+
case 16:sorts = new OddEven (mainApp, barras.arrayPrincipal);break;
508+
case 17:sorts = new Pancake (mainApp, barras.arrayPrincipal);break;
509+
case 18:sorts = new Pigeonhole (mainApp, barras.arrayPrincipal);break;
510+
case 19:sorts = new Quick (mainApp, barras.arrayPrincipal);break;
511+
case 20:sorts = new Radix (mainApp, barras.arrayPrincipal);break;
512+
case 21:sorts = new RecursiveBubble (mainApp, barras.arrayPrincipal);break;
513+
case 22:sorts = new RecursiveInsertion (mainApp, barras.arrayPrincipal);break;
514+
case 23:sorts = new RecursiveSelection (mainApp, barras.arrayPrincipal);break;
515+
case 24:sorts = new Selection (mainApp, barras.arrayPrincipal);break;
516+
case 25:sorts = new Shell (mainApp, barras.arrayPrincipal);break;
517+
case 26:sorts = new Stooge (mainApp, barras.arrayPrincipal);break;
518+
case 27:sorts = new Tim (mainApp, barras.arrayPrincipal);break;
519+
520+
// Obtenido mediante el [nombreAlgoritmos.lenght], siendo el valor superior al ultimo CASE.
521+
default:barras.desordenarArray();break;
576522
}
577523

578524
if (DibujarGraficos.finSort)
@@ -633,12 +579,6 @@ public void updateAnimacionesSoloDelayFijo() {
633579
panelBarras.repaint();
634580
Delay.delay(1);
635581
}
636-
/**
637-
* Actualiza los graficos y pone Delay fijo a 1 ms.
638-
*/
639-
public void updateSoloAnimaciones() {
640-
panelBarras.repaint();
641-
}
642582
// ---------------------------------------------------------------------------------------------
643583

644584
/**

target/.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/Adicionales/
2+
/EstilosGraficos/
3+
/Ordenar/
4+
/Principal/

0 commit comments

Comments
 (0)