-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQuickSort.java
58 lines (49 loc) · 1.28 KB
/
QuickSort.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
/*
* Guillermo Herrera Acosta
* A01400835
*/
public class QuickSort {
public <E extends Comparable<E>> void quicksort(E [] arreglo) {
quicksort(arreglo, 0, arreglo.length-1);
}
public <E extends Comparable<E>> void quicksort(E [] arreglo, int min, int max) {
if(min<max) {
int posPivote= particionar(arreglo, min, max);
quicksort(arreglo, min, posPivote-1);
quicksort(arreglo, posPivote+1, max);
}
}
public <E extends Comparable<E>> int particionar(E [] arreglo, int min, int max) {
E pivote= arreglo[(min+max)/2];
swap(arreglo,min,(min+max)/2);
int i=min+1;
for(int j=min+1; j<=max; j++) {
if(arreglo[j].compareTo(pivote)<0) {
swap(arreglo,i,j);
i++;
}
}
swap(arreglo,min,i-1);
return i-1;
}
public <E extends Comparable<E>> void swap(E [] arreglo, int origen, int destino) {
E tmp=arreglo[origen];
arreglo[origen]=arreglo[destino];
arreglo[destino]=tmp;
}
public <E extends Comparable<E>> void imprimeArreglo(E arreglo[]) {
for(E a:arreglo){
System.out.print(a+",");
}
}
public static void main(String[]args) {
/*
Double [] calix= {1.9,4.32,90.12,2.4,3.21,-100.0,23.0};
QuickSort qs= new QuickSort();
qs.imprimeArreglo(calix);
qs.quicksort(calix);
System.out.println();
qs.imprimeArreglo(calix);
*/
}
}