Randomized Select,randomizedselect,import rando
import randomdef partition(A, p, r): x = A[r] i = p - 1 for j in range(p, r): if A[j] <= x: i += 1 A[i], A[j] = A[j], A[i] A[i+1], A[r] = A[r], A[i+1] return i + 1def randomized_partition(A, p, r): i = random.randint(p, r) A[r], A[i] = A[i], A[r] return partition(A, p, r)def randomized_select(A, p, r, i): if p == r: return A[p] q = randomized_partition(A, p, r) k = q - p + 1 if i == k: return A[q] elif i < k: return randomized_select(A, p, q-1, i) else: return randomized_select(A, q + 1, r, i - k)if __name__ == "__main__": A = range(0, 1000) random.shuffle(A) print(randomized_select(A, 0, len(A) - 1, 100))#该片段来自于http://byrx.net
评论关闭