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 3ef6214

Browse files
author
javiluli
committed
Agrego 2 nuevos Algoritmos sort: Bidireccional bubble y Double Selection
1 parent c4a5d69 commit 3ef6214

File tree

4 files changed

+142
-37
lines changed

4 files changed

+142
-37
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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 BidirectionalBubble extends AdicionalesSorts implements ISort {
9+
10+
public BidirectionalBubble(MainAplicacion mainApp, int[] array) {
11+
this.mainApp = mainApp;
12+
sort(array);
13+
}
14+
15+
// @Override
16+
public void sort(int[] array) {
17+
setInicio(System.currentTimeMillis());
18+
int j;
19+
int st = -1;
20+
int n = array.length;
21+
22+
while (st < n) {
23+
st++;
24+
n--;
25+
for (j = st; j < n; j++) {
26+
if (array[j] > array[j + 1]) {
27+
int T = array[j];
28+
array[j] = array[j + 1];
29+
array[j + 1] = T;
30+
}
31+
mainApp.updateAnimaciones();
32+
}
33+
34+
for (j = n; --j >= st;) {
35+
if (array[j] > array[j + 1]) {
36+
int T = array[j];
37+
array[j] = array[j + 1];
38+
array[j + 1] = T;
39+
}
40+
mainApp.updateAnimaciones();
41+
}
42+
}
43+
44+
DibujarGraficos.finSort = true;
45+
}
46+
}

‎src/Ordenar/Algoritmos/Bubble.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ public Bubble(MainAplicacion mainApp, int[] array) {
1313
}
1414

1515
// @Override
16-
public void sort(int[] n) {
16+
public void sort(int[] array) {
1717
setInicio(System.currentTimeMillis());
18-
for (int i = 0; i < n.length; i++) {
19-
for (int j = 0; j < n.length - 1; j++) {
20-
if (n[j] > n[j + 1]) {
21-
int temp = n[j];
22-
n[j] = n[j + 1];
23-
n[j + 1] = temp;
18+
for (int i = 0; i < array.length; i++) {
19+
for (int j = 0; j < array.length - 1; j++) {
20+
if (array[j] > array[j + 1]) {
21+
int temp = array[j];
22+
array[j] = array[j + 1];
23+
array[j + 1] = temp;
2424
cambiosArray++;
2525
}
2626
accesoArray += 2;
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
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 DoubleSelection extends AdicionalesSorts implements ISort {
9+
10+
public DoubleSelection(MainAplicacion mainApp, int[] array) {
11+
this.mainApp = mainApp;
12+
sort(array);
13+
}
14+
15+
// @Override
16+
public void sort(int[] array) {
17+
setInicio(System.currentTimeMillis());
18+
int left = 0;
19+
int right = array.length - 1;
20+
int smallest = 0;
21+
int biggest = 0;
22+
23+
while (left <= right) {
24+
for (int i = left; i <= right; i++) {
25+
if (array[i] > array[biggest])
26+
biggest = i;
27+
if (array[i] < array[smallest])
28+
smallest = i;
29+
cambiosArray += 2;
30+
}
31+
32+
if (biggest == left)
33+
biggest = smallest;
34+
35+
int temp = array[left];
36+
array[left] = array[smallest];
37+
array[smallest] = temp;
38+
mainApp.updateAnimaciones();
39+
40+
temp = array[right];
41+
array[right] = array[biggest];
42+
array[biggest] = temp;
43+
mainApp.updateAnimaciones();
44+
45+
left++;
46+
right--;
47+
smallest = left;
48+
biggest = right;
49+
}
50+
mainApp.textos();
51+
DibujarGraficos.finSort = true;
52+
}
53+
}

‎src/Principal/MainAplicacion.java

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import Adicionales.Social;
2929
import Ordenar.AdicionalesSorts;
3030
import Ordenar.FinSort;
31+
import Ordenar.Algoritmos.BidirectionalBubble;
3132
import Ordenar.Algoritmos.BinaryInsertion;
3233
import Ordenar.Algoritmos.Bitonic;
3334
import Ordenar.Algoritmos.Bogo;
@@ -53,6 +54,7 @@
5354
import Ordenar.Algoritmos.RecursiveInsertion;
5455
import Ordenar.Algoritmos.RecursiveSelection;
5556
import Ordenar.Algoritmos.Selection;
57+
import Ordenar.Algoritmos.DoubleSelection;
5658
import Ordenar.Algoritmos.Shell;
5759
import Ordenar.Algoritmos.Stooge;
5860
import Ordenar.Algoritmos.Tim;
@@ -62,7 +64,8 @@
6264
*/
6365
public class MainAplicacion extends AdicionalesSorts {
6466
// NOMBRES DE LOS ALGORITMOS DE ORDENACION
65-
final String[] nombreAlgoritmos = {
67+
final String[] nombreAlgoritmos = {
68+
"Bidirectional Bubble",
6669
"Binary Insertion",
6770
"Bitonic",
6871
"Bogo",
@@ -71,6 +74,7 @@ public class MainAplicacion extends AdicionalesSorts {
7174
"Bucket",
7275
"Cocktail",
7376
"Cycle",
77+
"Double Selection",
7478
"Gnome",
7579
"Gravity",
7680
"Heap",
@@ -487,35 +491,37 @@ public void menuSorting() {
487491
MainAplicacion mainApp = new MainAplicacion();
488492
if (!accederOrdenacion) {
489493
textos();
490-
switch (seleccionAlgoritmo) {
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;
494+
switch (seleccionAlgoritmo) { //
495+
case 0:sorts = new BidirectionalBubble (mainApp, barras.arrayPrincipal);break;
496+
case 1:sorts = new BinaryInsertion (mainApp, barras.arrayPrincipal);break;
497+
case 2:sorts = new Bitonic (mainApp, barras.arrayPrincipal);break;
498+
case 3:sorts = new Bogo (mainApp, barras.arrayPrincipal);break;
499+
case 4:sorts = new Bubble (mainApp, barras.arrayPrincipal);break;
500+
case 5:sorts = new BubbleOptimized (mainApp, barras.arrayPrincipal);break;
501+
case 6:sorts = new BucketSort (mainApp, barras.arrayPrincipal);break;
502+
case 7:sorts = new Cocktail (mainApp, barras.arrayPrincipal);break;
503+
case 8:sorts = new Cycle (mainApp, barras.arrayPrincipal);break;
504+
case 9:sorts = new DoubleSelection (mainApp, barras.arrayPrincipal);break;
505+
case 10:sorts = new Gnome (mainApp, barras.arrayPrincipal);break;
506+
case 11:sorts = new Gravity (mainApp, barras.arrayPrincipal);break;
507+
case 12:sorts = new Heap (mainApp, barras.arrayPrincipal);break;
508+
case 13:sorts = new Inserccion (mainApp, barras.arrayPrincipal);break;
509+
case 14:sorts = new Introsort (mainApp, barras.arrayPrincipal);break;
510+
case 15:sorts = new IterativeMerge (mainApp, barras.arrayPrincipal);break;
511+
case 16:sorts = new IterativeQuick (mainApp, barras.arrayPrincipal);break;
512+
case 17:sorts = new Merge (mainApp, barras.arrayPrincipal);break;
513+
case 18:sorts = new OddEven (mainApp, barras.arrayPrincipal);break;
514+
case 19:sorts = new Pancake (mainApp, barras.arrayPrincipal);break;
515+
case 20:sorts = new Pigeonhole (mainApp, barras.arrayPrincipal);break;
516+
case 21:sorts = new Quick (mainApp, barras.arrayPrincipal);break;
517+
case 22:sorts = new Radix (mainApp, barras.arrayPrincipal);break;
518+
case 23:sorts = new RecursiveBubble (mainApp, barras.arrayPrincipal);break;
519+
case 24:sorts = new RecursiveInsertion (mainApp, barras.arrayPrincipal);break;
520+
case 25:sorts = new RecursiveSelection (mainApp, barras.arrayPrincipal);break;
521+
case 26:sorts = new Selection (mainApp, barras.arrayPrincipal);break;
522+
case 27:sorts = new Shell (mainApp, barras.arrayPrincipal);break;
523+
case 28:sorts = new Stooge (mainApp, barras.arrayPrincipal);break;
524+
case 29:sorts = new Tim (mainApp, barras.arrayPrincipal);break;
519525

520526
// Obtenido mediante el [nombreAlgoritmos.lenght], siendo el valor superior al ultimo CASE.
521527
default:barras.desordenarArray();break;

0 commit comments

Comments
(0)

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