Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b68cb37

Browse files
author
javiluli
committed
Agrego 2 nuevos algoritmos Sort: RecursiveInsertion y RecursiveSelection
1 parent 0ffd37b commit b68cb37

File tree

5 files changed

+108
-39
lines changed

5 files changed

+108
-39
lines changed

‎README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Ordenacion visual de un Array en Java
22

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

55
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:
66

@@ -31,7 +31,7 @@ jar -cvfm dist/ordenacionVisual.jar manifest.mf -C target/ ./
3131
java -jar dist//ordenacionVisual.jar
3232
```
3333

34-
## Disponibles 20 tipos de algoritmos.
34+
## Disponibles 22 tipos de algoritmos.
3535

3636
- Bitonic sort
3737
- [Bubble sort](https://youtu.be/XaJzmQhKbsM)
@@ -49,6 +49,8 @@ java -jar dist//ordenacionVisual.jar
4949
- Quick sort
5050
- Radix sort
5151
- Recursive Bubble sort
52+
- Recursive Insertion sort
53+
- Recursive Selection sort
5254
- Selection sort
5355
- Shell sort
5456
- Stooge sort

‎src/Ordenar/Algoritmos/RecursiveBubble.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import Principal.MainAplicacion;
77

88
public class RecursiveBubble extends AdicionalesSorts implements ISort {
9+
910
public RecursiveBubble(MainAplicacion m, int[] n) {
1011
this.m = m;
1112
sort(n);
@@ -14,11 +15,11 @@ public RecursiveBubble(MainAplicacion m, int[] n) {
1415
// @Override
1516
public void sort(int[] arr) {
1617
setInicio(System.currentTimeMillis());
17-
bubbleSort(arr, arr.length);
18+
recursiveBubbleSort(arr, arr.length);
1819
DibujarGraficos.finSort = true;
1920
}
2021

21-
public void bubbleSort(int arr[], int n) {
22+
public void recursiveBubbleSort(int arr[], int n) {
2223
if (n == 1)
2324
return;
2425

@@ -31,7 +32,7 @@ public void bubbleSort(int arr[], int n) {
3132
}
3233
accesoArray++;
3334
m.updateAnimaciones();
34-
bubbleSort(arr, n - 1);
35+
recursiveBubbleSort(arr, n - 1);
3536
m.textos();
3637
}
3738
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package Ordenar.Algoritmos;
2+
3+
import Ordenar.AdicionalesSorts;
4+
import Ordenar.ISort;
5+
import Principal.DibujarGraficos;
6+
import Principal.MainAplicacion;
7+
8+
public class RecursiveInsertion extends AdicionalesSorts implements ISort {
9+
10+
public RecursiveInsertion(MainAplicacion m, int[] n) {
11+
this.m = m;
12+
sort(n);
13+
}
14+
15+
// @Override
16+
public void sort(int[] arr) {
17+
setInicio(System.currentTimeMillis());
18+
recursiveInsertionSort(arr, arr.length);
19+
DibujarGraficos.finSort = true;
20+
}
21+
22+
public void recursiveInsertionSort(int arr[], int n) {
23+
if (n <= 1)
24+
return;
25+
26+
recursiveInsertionSort(arr, n - 1);
27+
28+
int last = arr[n - 1];
29+
int j = n - 2;
30+
31+
while (j >= 0 && arr[j] > last) {
32+
arr[j + 1] = arr[j];
33+
j--;
34+
}
35+
arr[j + 1] = last;
36+
accesoArray++;
37+
m.updateAnimaciones();
38+
m.textos();
39+
}
40+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package Ordenar.Algoritmos;
2+
3+
import Ordenar.AdicionalesSorts;
4+
import Ordenar.ISort;
5+
import Principal.DibujarGraficos;
6+
import Principal.MainAplicacion;
7+
8+
public class RecursiveSelection extends AdicionalesSorts implements ISort {
9+
10+
public RecursiveSelection(MainAplicacion m, int[] n) {
11+
this.m = m;
12+
sort(n);
13+
}
14+
15+
// @Override
16+
public void sort(int[] arr) {
17+
setInicio(System.currentTimeMillis());
18+
recursiveSelectionSort(arr, 0, arr.length - 1);
19+
DibujarGraficos.finSort = true;
20+
}
21+
22+
public void recursiveSelectionSort(int[] list, int low, int high) {
23+
if (low < high) {
24+
int indexOfMin = low;
25+
int min = list[low];
26+
for (int i = low + 1; i <= high; i++) {
27+
if (list[i] < min) {
28+
min = list[i];
29+
indexOfMin = i;
30+
}
31+
}
32+
33+
// Swap the smallest number in list
34+
list[indexOfMin] = list[low];
35+
list[low] = min;
36+
37+
m.updateAnimaciones();
38+
m.textos();
39+
// Sort the remaining list
40+
recursiveSelectionSort(list, low + 1, high);
41+
42+
}
43+
}
44+
}

‎src/Principal/MainAplicacion.java

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -32,37 +32,13 @@
3232

3333
public class MainAplicacion extends AdicionalesSorts {
3434
// NOMBRES DE LOS ALGORITMOS DE ORDENACION
35-
final String[] nombreAlgoritmos = {
36-
"Bitonic",
37-
"Bubble",
38-
"Bubble Optimized",
39-
"Cocktail",
40-
"Cycle",
41-
"Gnome",
42-
"Heap",
43-
"Insertion",
44-
"Iterative Quick",
45-
"Merge",
46-
"Odd Even",
47-
"Pancake",
48-
"Pigeonhole",
49-
"Quick",
50-
"Radix",
51-
"Recursive Bubble",
52-
"Selection",
53-
"Shell",
54-
"Stooge",
55-
"Tim" };
35+
final String[] nombreAlgoritmos = { "Bitonic", "Bubble", "Bubble Optimized", "Cocktail", "Cycle", "Gnome", "Heap",
36+
"Insertion", "Iterative Quick", "Merge", "Odd Even", "Pancake", "Pigeonhole", "Quick", "Radix",
37+
"Recursive Bubble", "Recursive Insertion", "Recursive Selection", "Selection", "Shell", "Stooge", "Tim" };
5638
// DISEÑO GRAFICO DE LAS ANIMACIONES
57-
final static String[] nombreGrafico = {
58-
"Barras clasicas",
59-
"Piramide horizontal",
60-
"Piramide vertical",
61-
"Pixel",
62-
"Circulo con barras",
63-
"Circunferencia",
64-
"Espiral con barras" };
65-
39+
final static String[] nombreGrafico = { "Barras clasicas", "Piramide horizontal", "Piramide vertical", "Pixel",
40+
"Circulo con barras", "Circunferencia", "Espiral con barras" };
41+
6642
// JFRAME PRINCIPAL
6743
private JFrame frame = new JFrame();
6844
// JPANEL
@@ -142,7 +118,7 @@ public void main() {
142118
barras = new DibujarGraficos();
143119
barras.setBounds(0, 0, DibujarGraficos.WIN_WIDTH, DibujarGraficos.WIN_HEIGHT);
144120
panelBarras.add(barras);
145-
barras.setLayout(null);
121+
146122
panelBarras.setVisible(true);
147123
frame.setResizable(false);
148124
frame.setTitle("Visualizador de ordenacion de matrices");
@@ -487,15 +463,21 @@ public void menuSorting() {
487463
sorts = new RecursiveBubble(mainApp, barras.arrayPrincipal);
488464
break;
489465
case 16:
490-
sorts = new Selection(mainApp, barras.arrayPrincipal);
466+
sorts = new RecursiveInsertion(mainApp, barras.arrayPrincipal);
491467
break;
492468
case 17:
493-
sorts = new Shell(mainApp, barras.arrayPrincipal);
469+
sorts = new RecursiveSelection(mainApp, barras.arrayPrincipal);
494470
break;
495471
case 18:
496-
sorts = new Stooge(mainApp, barras.arrayPrincipal);
472+
sorts = new Selection(mainApp, barras.arrayPrincipal);
497473
break;
498474
case 19:
475+
sorts = new Shell(mainApp, barras.arrayPrincipal);
476+
break;
477+
case 20:
478+
sorts = new Stooge(mainApp, barras.arrayPrincipal);
479+
break;
480+
case 21:
499481
sorts = new Tim(mainApp, barras.arrayPrincipal);
500482
break;
501483
default:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /