int select(int[] list, int left, int right, int n)
{
   if(left == right)        // آرایه تنها یک عنصر دارد
       return list[left];
   pivotIndex = left + floor(rand() * (right - left + 1));// یک اندیس تصادفی انتخاب می‌کنیم
   pivotIndex = partition(list, left, right, pivotIndex)
   // The pivot is in its final sorted position
   if(n == pivotIndex)
       return list[n];
   else if(n < pivotIndex)
       return select(list, left, pivotIndex - 1, n);
   else
       return select(list, pivotIndex + 1, right, n);
}