有朋友看了“一道课本题目引发的思考”一文后,问到binary search对一亿个查询单位进行查询时,最差情况为什么会是27次?在此,我要为我昨天的冒失道歉,因我以为这是一道心算题,应该不难。这里就解释一下吧,试想,binary search每做一次查询,原有数据便有一半可以剔除,假设最差情况是进行了x次查询,于是2^x = 10^8,解之:
log(2^x) = log(10^8)
=> xlog2 = 8log10
=> x = 8/(log2)
因log2约等于0.3,那么,x也就约等于26.7,取整便是27。
另有一朋友问“如果C#要处理的数据并非是一组数字,则该怎么对这些数据进行排序?”,这个问题的解答是,.NET中提供了IComparable接口,只要在类中实现该接口的IComparable方法,制定自己的排序规则即可对不同类型的数据进行排序。