# Include <iostream>
# Include <time. h>
# Include <stdlib. h>
Using namespace STD;
Int random (int A, int B)
{
Srand (null );
Return rand () % (B-A) +;
}
Void Exchange (Int & A, Int & B)
{
Int temp;
Temp =;
A = B;
B = temp;
}
Int partition (int * a, int P, int R)
{
Int x = A [R];
Int I = p-1;
For (Int J = P; j <r; j ++)
{
If (A [J] <= X)
{
I = I + 1;
Exchange (A [I], a [J]);
}
}
Exchange (A [I + 1], a [R]);
Return I + 1;
}
Int randomized_partition (int * a, int P, int R)
{
Int I = random (P, R );
Exchange (A [R], a [I]);
Return partition (A, P, R );
}
Int randomized_select (int * a, int P, int R, int I) // select the I-th smallest element in the array a [p... R]
{
If (P = r)
Return a [p];
Int q = randomized_partition (A, P, R );
Int K = Q-p + 1;
If (I = K)
Return a [Q];
Else if (I <K)
Return randomized_select (A, P, Q-1, I );
Else
Return randomized_select (A, q + 1, R, I-k );
}
Int main ()
{
Int A [] = };
Int length = sizeof (a)/sizeof (INT)-1;
Cout <randomized_select (A, 0, length, 9) <Endl;
System ("pause ");
Return 0;
}