Sie sind auf Seite 1von 6

Quicksort Prueba de escritorio

Int vc={10,8,9,6,2,4,1,5,7};

1. Quicksort(v,0,9);

Int i=0, j=9, aux;

Int Pivote=2;

1.1.1 Hacer

{ //Pivote=v[(izq+der)/2];

//Pivote=2

1.1.1.1 Mientras(10 < 2) i++; // v[i]<pivote No cumple, i=0

1.1.1.2 Mientras(7 > 2) j--; // v[j]>pivote No cumple, j=9

1.1.1.3 Si(0<=9) // Si cumple

Entonces

{ //i=0 j=9

aux=10; //aux=v[i] i=0;

v[0]=7//v[i]=v[j]

v[9]=10;

i++; //i=1

j--; //j=8

} While(1<=8) ; // si cumple

// v={7,8,9,6,2,4,1,5,10}

1.1.2 Hacer

{ //Pivote=v[(izq+der)/2];

//Pivote=2

1.1.2.1 Mientras(8< 2) i++; // v[i]<pivote No cumple, i=1

1.1.2.2Mientras(5> 2) j--; // v[j]>pivote Si cumple, j=8

1.2.2.1 j=7;

1.2.2.2 (1>2); // No cumple

// i=1 j=7

1.1.2.3 Si(1<=7) // Si cumple

Entonces
{ //i=1 j=7

aux=8; //aux=v[i] i=1;

v[1]=1//v[i]=v[j]

v[7]=8; //v[j] =aux

i++; //i=2

j--; //j=6

} While(2<=6) ; // si cumple

// v={7,1,9,6,2,4,8,5,10}

1.1.3 Hacer

{ //Pivote=v[(izq+der)/2];

//Pivote=2

1.1.3.1 Mientras(9< 2) i++; // v[i]<pivote No cumple, i=2

1.1.3.2Mientras(8> 2) j--; // v[j]>pivote Si cumple, j=6

1.1.3.2.1 j=5;

1.1.3.2.2 (4>2); // Si cumple

J=4;

1.1.3.2.3 (2>2);//No cumple

// i=2 j=4

1.1.3.3 Si(2<=4) // Si cumple

Entonces

{ //i=2 j=4

aux=9; //aux=v[i] i=2;

v[2]=2;//v[i]=v[j]

v[4]=9; //v[j] =aux

i++; //i=3

j--; //j=3

} While(3<=3) ; // si cumple

// v={7,1,2,6,9,4,8,5,10}
1.1.4 Hacer

{ //Pivote=v[(izq+der)/2];

//Pivote=2

1.1.4.1 Mientras(6< 2) i++; // v[i]<pivote No cumple, i=3

1.1.4.2Mientras(6> 2) j--; // v[j]>pivote Si cumple, j=3

1.1.4.2.1 j=2;

1.1.4.2.2 (2>2); // No cumple

// i=3 j=2

1.1.4.3 Si(3<=2) // No cumple

} While(3<=2) ; // No cumple

1.2 Si(2>0)// Si cumple Quicksort(v,0,2);

// v={7,1,2,6,9,4,8,5,10}

1.2.1 Quicksort(v,0,2)

Int i=0, j=2, aux;

Int Pivote=1; //Pivote=v[(izq+der)/2];

1.2.1.1 Hacer

1.2.1.1.1 Mientras(7< 1) i++; // v[i]<pivote No cumple, i=0

1.2.1.1.2Mientras(2> 1) j--; // v[j]>pivote Si cumple, j=2

1.2.1.1.2.1 j=1;

1.2.1.1.2.2 (1>1) // No cumple

1.2.1.1.3 Si(1<=1) // Si cumple

// v={7,1,2,6,9,4,8,5,10}

Entonces

{ //i=1 j=1

aux=1; //aux=v[i] i=1;

v[1]=1; //v[i]=v[j]

v[1]=1; //v[j] =aux

i++; //i=2

j--; //j=0

}
} While(2<=0) ; // No cumple

// v={7,1,2,6,9,4,8,5,10} i=2 j=0 izq=0 der=2

1.2.2 Si(0>0)// No cumple

1.2.3 Si(2<2)// No cumple

Retorna y continuamos la funcin anterior;

// i=3 j=2 izq=0 der=9

1.3 Si(3<9)// Si cumple Quicksort(v,3,9);

// v={7,1,2,6,9,4,8,5,10}

1.3.1 Quicksort(v,3,9)

Int i=3, j=9, aux;

Int Pivote=8; //Pivote=v[(izq+der)/2];

1.3.1.1 Hacer

1.3.1.1.1 Mientras(6< 8) i++; // v[i]<pivote Si cumple, i=3

I++; //i=4

1.3.1.1.1.1 (9<8) // No cumple i=4

1.3.1.1.2Mientras(10> 8) j--; // v[j]>pivote Si cumple, j=9

1.3.1.1.2.1 j=8;

1.3.1.1.2.2 (5>8) // No cumple j=8

1.2.1.1.3 Si(4<=8) // Si cumple

// v={7,1,2,6,9,4,8,5,10}

Entonces

{ //i=4 j=8

aux=9; //aux=v[i] i=4;

v[4]=5; //v[i]=v[j]

v[8]=9; //v[j] =aux

i++; //i=5

j--; //j=7

// v={7,1,2,6,5,4,8,9,10}

} While(5<=7) ; // Si cumple
// v={7,1,2,6,5,4,8,9,10}

1.3.1.2 Hacer

{ // i=5 j=7

1.3.1.2.1 Mientras(4< 8) i++; // v[i]<pivote Si cumple, i=5

I++; //i=6

1.3.1.2.1.1 (8<8) // No cumple i=6

1.3.1.2.2Mientras(9> 8) j--; // v[j]>pivote Si cumple, j=7

1.3.1.2.2.1 j=6;

1.3.1.1.2.2 (8>8) // No cumple j=6

1.2.1.2.3 Si(6<=6) // Si cumple

// v={7,1,2,6,5,4,8,9,10}

Entonces

{ //i=6 j=7

aux=8; //aux=v[i];

v[6]=8; //v[i]=v[j]

v[6]=8; //v[j] =aux

i++; //i=7

j--; //j=5

// v={7,1,2,6,5,4,8,9,10}

} While(7<=5) ; // No cumple

1.3.2 Si(5>3) // Si cumple Quicksort(v,3,j);

1.3.2.1 Quicksort(v,3,5) // izq=3 der=5

Int i=3, j=5, aux;

Int Pivote=5 //Pivote=v[(izq+der)/2];

1.3.2.1.1 Hacer

{ // i=3 j=5

1.3.2.1.1.1 Mientras(6< 5) // v[i]<pivote No cumple, i=3

1.3.2.1.1.2 (4<5) // Si cumple j=5

1.3.2.1.1.2.1 j--; // j=4


1.3.2.1.3 (5<5) //No cumple j=4

// v={7,1,2,6,5,4,8,9,10}

Entonces

{ //i=6 j=7

aux=8; //aux=v[i];

v[6]=8; //v[i]=v[j]

v[6]=8; //v[j] =aux

i++; //i=7

j--; //j=5

// v={7,1,2,6,5,4,8,9,10}

} While(7<=5) ; // No cumple