Thuật toán đơn giản thông thường để tìm phần tử trung vị trong một mảng gồm số là:
- Mẫu phần tử từ thay thế thành
- Sắp xếp và tìm thứ hạng phần tử và của
- Kiểm tra xem và có nằm đối diện với trung tuyến của và có nhiều nhất các phần tử trong nằm giữa và cho một hằng số thích hợp . Thất bại nếu điều này không xảy ra.
- khác, tìm trung vị bằng cách sắp xếp các phần tử của giữa và
Không khó để thấy rằng điều này chạy trong thời gian tuyến tính và nó thành công với xác suất cao. (Tất cả các sự kiện xấu là độ lệch lớn so với kỳ vọng của nhị thức.)
Một thuật toán thay thế cho cùng một vấn đề, rất tự nhiên để dạy cho những sinh viên đã nhìn thấy sắp xếp nhanh là một thuật toán được mô tả ở đây: Lựa chọn ngẫu nhiên
Cũng dễ dàng nhận thấy rằng cuộc gọi này có thời gian chạy dự kiến tuyến tính: giả sử rằng "vòng" là một chuỗi các cuộc gọi đệ quy kết thúc khi một cuộc chia tách 1 / 4-3 / 4, và sau đó quan sát rằng độ dài dự kiến là một vòng nhiều nhất là 2. (Trong lần rút thăm đầu tiên của vòng, xác suất để có được sự phân chia tốt là 1/2 và sau đó thực sự tăng, vì thuật toán được mô tả nên độ dài vòng bị chi phối bởi một biến ngẫu nhiên hình học.)
Vì vậy, bây giờ câu hỏi:
Có thể chỉ ra rằng lựa chọn ngẫu nhiên chạy trong thời gian tuyến tính với xác suất cao?
Chúng ta có các vòng và mỗi vòng có độ dài ít nhất với xác suất nhiều nhất là , do đó, một liên kết cho biết thời gian chạy là với xác suất .
Đây là loại không hài lòng, nhưng nó thực sự là sự thật?