1. Integrantes del Equipo:
Chávez Sierra Juan Paúl.
Cristín Esperano Luis Enrique.
Leyva Bujons Ivan Alberto.
López Alva Luis Antonio.
Materia: Estructura de Datos.
Maestro: M.C. Gerardo Gálvez Gámez.
2. Su autor es el científico británico en computación Charles
Antony Richard Hoare.
Basado en la técnica de divide y vencerás, que permite, en
promedio, ordenar n elementos en un tiempo proporcional
a n log n.
El método de ordenamiento Quicksort es actualmente el
más eficiente y veloz de los métodos de ordenación
interna.
También conocido con el nombre del método rápido y de
ordenamiento por partición.
3. Lo que hace este algoritmo es dividir recurvisamente el
vector en partes iguales, indicando un elemento de inicio,
fin y un pivote (o comodin) que nos permitira segmentar
nuestra lista. Una vez dividida, lo que hace, es dejar todos
los mayores que el pivote a su derecha y todos los menores
a su izquierda. Al finalizar el algoritmo, nuestros elementos
estan ordenados.
4. Tiene aparentemente la propiedad de trabajar mejor para
elementos de entrada desordenados completamente, que
para elementos semiordenados. Esta situación es
precisamente la opuesta al ordenamiento de burbuja.
Este método es una mejora sustancial del método de
intercambio directo.
6. pasada #1 5 2 7 3 1 8 2 6 9
pivote=5
5>9 no
5>6 no
5>2 si intercambio
2 2 7 3 1 8 5 6 9
5<2 no
5<7 si intercambio
2 2 5 3 1 8 7 6 9
5>8 no
5>1 si intercambio
2 2 1 3 5 8 7 6 9
5<3 no
2 2 1 3 5 8 7 6 9
fin pasada #1
7.
8. pasada 4 1 2 2 3 5 8 7 6 9
pivote grupo
2 = 8 8>9 no
8>6 si intercambio
1 2 2 3 5 6 7 8 9
8<7 no
fin pasada #4 grupo 4
1 2 2 3 5 6 7 8 9
pasada #5
pivote grupo 6>7 no
4 = 6
fin pasada #5
fin metodo
Arreglo 1 2 2 3 5 6 7 8 9
Ordenado
9. public void Quicksort(int[] Arreglo, int PrimerElemento, int
UltimoElemento)
{
int Aux, Pivote;
this.Arreglo=new int[Arreglo.length];
int Izquierda=PrimerElemento;
int Derecha=UltimoElemento;
do
{
Pivote=Izquierda;
while(Arreglo[Pivote] < Arreglo[Derecha])
{
Derecha--;
}
Aux = Arreglo[Pivote];
Arreglo[Pivote] = Arreglo[Derecha];
Arreglo[Derecha] = Aux;
Izquierda++;
while(Arreglo[Pivote] > Arreglo[Izquierda])
{
Izquierda++;
}
Aux = Arreglo[Pivote];
Arreglo[Pivote] = Arreglo[Izquierda];
Arreglo[Izquierda] = Aux;
Derecha--;
}while(PrimerElemento <= UltimoElemento);
if(PrimerElemento < Derecha)
{
Quicksort(Arreglo, PrimerElemento, Derecha);
}
if(Izquierda < UltimoElemento)
{
Quicksort(Arreglo, Izquierda, UltimoElemento);
}
this.Arreglo = Arreglo;
}
NUESTRA PROPUESTA DE
CODIGO.
10. El método de ordenamiento Quicksort es un método muy rápido ya que divide al
arreglo en pequeños subgrupos y los va comparando hasta reducir los subgrupos
a la mínima cantidad evitando hacer comparaciones innecesarias y pasadas de
más.