CountingSort(A, B, k) {
for i = 1 to k
C[i] = 0;
for j = 1 to n
C[A[j]] += 1;
for i = 2 to k
C[i] = C[i] + C[i-1];
for j = n downto 1
//stable하게 만들기 위해 1 to n이 아닌 n to 1 수행
B[C[A[j]]] = A[j];
C[A[j]] -= 1;
}RadixSort(A, d){
for i=1 to d
StableSort(A) on digit i
//StableSort = counting sort
}RandomizedSelect(A, l, r, k)
if (l == r) then return A[l];
p = RandomizedPartition(A, l, r)
if (p == k) then return A[p];
if (p < k) then
return RandomizedSelect(A, l, p-1, k);
else
return RandomizedSelect(A, p+1, r, k);