-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathClsMetodosOrdenamiento.java
134 lines (105 loc) · 3.13 KB
/
ClsMetodosOrdenamiento.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import java.util.Random;
import java.util.PrimitiveIterator.OfDouble;
import javax.swing.DefaultListModel;
public class ClsMetodosOrdenamiento {
long tiempoInicial, tiempoFinal;
int[] arregloNormal;
public int[] generarNumeros(int cantidad) {
arregloNormal = new int[cantidad];
Random alea = new Random();
for (int i = 0; i < cantidad; i++) {
arregloNormal[i] = alea.nextInt(100000);
}
return arregloNormal;
}
public int[] BubbleSort(int[] arreglo) {
tiempoInicial = System.currentTimeMillis();
// Tamaño del arreglo
int tam = arreglo.length;
boolean cambio;
for (int i = 0; i < tam; i++) {
cambio = false;
for (int j = 0; j < tam - 1; j++) {
if (arreglo[j] > arreglo[j + 1]) {
int aux = arreglo[j];
arreglo[j] = arreglo[j + 1];
arreglo[j + 1] = aux;
cambio = true;
}
}
if (!cambio) {
break;
}
}
tiempoFinal = System.currentTimeMillis();
return arreglo;
}
public int[] ShellSort(int[] arreglo) {
int tam = arreglo.length;
tiempoInicial = System.currentTimeMillis();
for (int intervalo = tam / 2; intervalo > 0; intervalo /= 2) {
for (int i = intervalo; i < arreglo.length; i++) {
int aux = arreglo[i];
int j = i;
while (j >= intervalo && arreglo[j - intervalo] > aux) {
arreglo[j] = arreglo[j - intervalo];
j -= intervalo;
}
arreglo[j] = aux;
}
}
tiempoFinal = System.currentTimeMillis();
return arreglo;
}
public int[] quicksort(int Arreglo[], int izquierdo, int derecho) {
int pivote = Arreglo[izquierdo];
int indiceizq = izquierdo;
int indiceder = derecho;
int aux;
while (indiceizq < indiceder) {
while (Arreglo[indiceizq] <= pivote && indiceizq < indiceder) {
indiceizq++;
}
while (Arreglo[indiceder] > pivote) {
indiceder--;
}
if (indiceizq < indiceder) {
aux = Arreglo[indiceizq];
Arreglo[indiceizq] = Arreglo[indiceder];
Arreglo[indiceder] = aux;
}
}
Arreglo[izquierdo] = Arreglo[indiceder];
Arreglo[indiceder] = pivote;
if (izquierdo < indiceder - 1)
quicksort(Arreglo, izquierdo, indiceder - 1); // recursividad: ordenamos arreglo izquierdo
if (indiceder + 1 < derecho)
quicksort(Arreglo, indiceder + 1, derecho); // recursividad: ordenamos arreglo derecho
tiempoFinal = System.currentTimeMillis();
return Arreglo;
}
// tiempo QuickSort
public String obtenerTiempo(long inicio, long fin) {
return "Tiempo: " + (fin - inicio) + " milisegundos";
}
// tiempo BubbleSort y ShellSort
public String obtenerTiempo() {
return "Tiempo: " + (tiempoFinal - tiempoInicial) + " milisegundos";
}
public DefaultListModel<Integer> imprimir(int[] arr) {
DefaultListModel<Integer> lista = new DefaultListModel<>();
lista.clear();
for (int num : arr) {
lista.addElement(num);
}
return lista;
}
// arreglo para el form
public int[] obtenerArreglo() {
int[] arregloform = new int[arregloNormal.length];
for (int i = 0; i < arregloform.length; i++) {
arregloform[i] = arregloNormal[i];
}
return arregloform;
}
}