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); }