Hiring problem
如果此时的对象i是前i个人里面最好的,那么就雇佣他。
随机算法:将这些人随机化
雇佣的人数:对第i个人,他是前i个人里面最好的概率为1/i, 因此期望为 ∑ 1 i = O ( ln N ) \sum \frac1i=O(\ln N) ∑i1=O(lnN)
hir only once: 只录用1个人,先面试k个人,全部不录用。然后从k+1个人开始,如果比k个人最好的人都好,那么就录用。
录于i的条件:1. 第i个人是前i个人里面最好的,2.从第k+1到第i-1没有录于任何人。这意味着前i-1个人里面,最好的落在了前k个人之中。
第i个人被选择的概率是:1/N*k/(i-1)
选择了N个人最好的那个的概率是k+1到N的人概率求和(?)
因此k应该选择N/e
Quick Sort
最坏情况和选择的pivot有关。最坏情况是O(N^2),就是每次选择了最大的或者最小的,
Center spiltter: 分成的最小一部分至少是1/4
如果随机选择是Center splitter的概率是1/2
最坏结果是O(NlogN)