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 8e938ea

Browse files
author
javiluli
committed
Modifico el Algoritmo Radix, Cycle y FinSort'
1 parent e0a4570 commit 8e938ea

File tree

6 files changed

+87
-94
lines changed

6 files changed

+87
-94
lines changed

‎ordenaciones.jar

76 Bytes
Binary file not shown.

‎src/Sorts/Algoritmos/Cycle.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public Cycle(Main m) {
1414
// @Override
1515
public void sort() {
1616
setInicio(System.currentTimeMillis());
17-
intwrites = 0;
17+
1818
for (int cycle_start = 0; cycle_start <= n.length - 2; cycle_start++) {
1919
accesoArray++;
2020
int item = n[cycle_start];
@@ -34,7 +34,7 @@ public void sort() {
3434
int temp = item;
3535
item = n[pos];
3636
n[pos] = temp;
37-
writes++;
37+
cambiosArray++;
3838
}
3939

4040
while (pos != cycle_start) {
@@ -52,7 +52,6 @@ public void sort() {
5252
int temp = item;
5353
item = n[pos];
5454
n[pos] = temp;
55-
writes++;
5655
cambiosArray++;
5756
}
5857
m.updateAnimaciones();

‎src/Sorts/Algoritmos/Radix.java

Lines changed: 0 additions & 73 deletions
This file was deleted.

‎src/Sorts/Algoritmos/RadixLSD.java

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package Sorts.Algoritmos;
2+
3+
import Interfaz.Sort;
4+
import Principal.Barras;
5+
import Principal.Main;
6+
import Sorts.Sorts;
7+
8+
public class RadixLSD extends Sorts implements Sort {
9+
public RadixLSD(Main m) {
10+
this.m = m;
11+
sort();
12+
}
13+
14+
@Override
15+
public void sort() {
16+
setInicio(System.currentTimeMillis());
17+
ordenar(n, 4);
18+
Barras.finSort = true;
19+
}
20+
21+
public void ordenar(int[] array, int len) {
22+
if (array.length == 0) {
23+
return;
24+
}
25+
26+
int minValue = array[0];
27+
int maxValue = array[0];
28+
for (int i = 1; i < array.length; i++) {
29+
if (array[i] < minValue) {
30+
minValue = array[i];
31+
} else if (array[i] > maxValue) {
32+
maxValue = array[i];
33+
}
34+
}
35+
36+
int exponent = 1;
37+
while ((maxValue - minValue) / exponent >= 1) {
38+
countingSortByDigit(array, len, exponent, minValue);
39+
exponent *= len;
40+
}
41+
}
42+
43+
private void countingSortByDigit(int[] array, int len, int exponent, int minValue) {
44+
int bucketIndex;
45+
int[] buckets = new int[len];
46+
int[] output = new int[array.length];
47+
48+
for (int i = 0; i < len; i++)
49+
buckets[i] = 0;
50+
51+
for (int i = 0; i < array.length; i++) {
52+
bucketIndex = (int) (((array[i] - minValue) / exponent) % len);
53+
buckets[bucketIndex]++;
54+
accesoArray++;
55+
}
56+
57+
for (int i = 1; i < len; i++)
58+
buckets[i] += buckets[i - 1];
59+
60+
for (int i = array.length - 1; i >= 0; i--) {
61+
bucketIndex = (int) (((array[i] - minValue) / exponent) % len);
62+
accesoArray++;
63+
output[--buckets[bucketIndex]] = array[i];
64+
accesoArray++;
65+
}
66+
67+
for (int i = 0; i < array.length; i++) {
68+
array[i] = output[i];
69+
accesoArray++;
70+
m.updateAnimaciones();
71+
}
72+
73+
}
74+
75+
@Override
76+
public String getNombre() {
77+
return "Radix LSD Sort";
78+
}
79+
80+
}

‎src/Sorts/FinSort.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ public void sort() {
1616
for (int i = 0; i < n.length; i++) {
1717
Barras.mismo = i + 1;
1818
Barras.anterioresMismo = i;
19-
m.updateAnimaciones();
19+
m.updateAnimacionesSinTiempo();
2020
}
2121
Barras.finSort = false;
22-
m.updateAnimaciones();
22+
m.updateAnimacionesSinTiempo();
2323
}
2424

2525
@Override

‎src/principal/Main.java

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,12 @@
2727
import Adicionales.Social;
2828
import Sorts.FinSort;
2929
import Sorts.Sorts;
30-
import Sorts.Algoritmos.Bubble;
31-
import Sorts.Algoritmos.BubbleOptimized;
32-
import Sorts.Algoritmos.Cocktail;
33-
import Sorts.Algoritmos.Cycle;
34-
import Sorts.Algoritmos.Gnome;
35-
import Sorts.Algoritmos.Heap;
36-
import Sorts.Algoritmos.Inserccion;
37-
import Sorts.Algoritmos.Merge;
38-
import Sorts.Algoritmos.OddEven;
39-
import Sorts.Algoritmos.Pancake;
40-
import Sorts.Algoritmos.Pigeonhole;
41-
import Sorts.Algoritmos.Quick;
42-
import Sorts.Algoritmos.Radix;
43-
import Sorts.Algoritmos.Selection;
30+
import Sorts.Algoritmos.*;
4431

4532
public class Main extends Sorts {
4633
// NOMBRES DE LOS ALGORITMOS
4734
private final String[] nombreAlgoritmos = { "Bubble", "Bubble Optimized", "Cocktail", "Cycle", "Gnome", "Heap",
48-
"Insertion", "Merge", "Odd Even", "Pancake", "Pigeonhole", "Quick", "Radix", "Selection" };
35+
"Insertion", "Merge", "Odd Even", "Pancake", "Pigeonhole", "Quick", "Radix LSD", "Selection" };
4936
// DISEÑO GRAFICO DE LAS ANIMACIONES
5037
private final static String[] nombreGrafico = { "Escalera", "Piramide horizontal", "Pixel", "Circulo",
5138
"Circunferencia", "Espiral" };
@@ -460,7 +447,7 @@ public void sorting() {
460447
sorts = new Quick(main);
461448
break;
462449
case 12:
463-
sorts = new Radix(main);
450+
sorts = new RadixLSD(main);
464451
break;
465452
case 13:
466453
sorts = new Selection(main);

0 commit comments

Comments
(0)

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