-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathQuickSort.java
More file actions
56 lines (42 loc) · 1.37 KB
/
QuickSort.java
File metadata and controls
56 lines (42 loc) · 1.37 KB
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
public class QuickSort {
int arreglo[];
int tamano;
int aux;
public void datos (int [] entrada ){
if (entrada.length == 0){
return;
}
this.arreglo = entrada;
tamano = entrada.length;
//Se llama a quick con parametros de 0 --> el tamano del arreglo
quick.(0, tamano-1);
}
private void quick (int primero, int ultimo){
int p = primero; //Para realizar el recorrido del primer al ultimo elemento
int u = ultimo; //Para realizar el recorrido del utlimo al primer elemento
// Se coloca el pivote como el numero de en medio
int pivote = arreglo[(primero+ultimo)/2];
//Estas instruccinoes ayudan a dividir el arreglo
while (p <= u){
/*
Se verificaran los numeros a la izquierda del pivote que sean mayores que el
y los numero a la derecha del pivote que sean menores a el. Cuando se identifiquen
se hará un intercambio de valores
*/
while (arreglo[p] < pivote){p++;} //Busca elementos mayores al pivote
while (arreglo[u] > pivote){u--;} //Busca elementos menores al pivote
//Se realiza el intercambio de numeros utilizando una variable auxiliar
if (p <= u){
aux = arreglo[p];
arreglo[p] = arreglo[u];
arreglo[j] = aux;
//Mueve a la siguiente posicion
p++;
u--:
}
//Vuelve a llamar quick
if (primero < u){quick (primero, u);}
if (p < ultimo) {quick (p, ultimo);}
}
}
}