顺序搜索分析

时间:2010-10-23 16:56:22

标签: algorithm math analysis

我正在阅读Robert Sedwick的C ++算法,如下所述

有序表中的连续搜索检查最坏情况下每次搜索的N个数字,以及平均每个搜索的N / 2个数字。

这个结果来自于假设搜索是相同的 可能会终止于表中N个数字定义的N + 1个区间中的任何一个,这些区间会立即导致表达式(1 + 2 + 3 + 4 + ... + N + N)/ N =(N + 3) )/ 2。

任何人都可以帮助我理解我们是如何达到上述表达的,即N + 3/2是如何到达的?

2 个答案:

答案 0 :(得分:3)

前N个整数的和(1 + 2 + 3 + ... + N)=(N + 1)N / 2

看到这个的简单方法是写出前后的总和:

1 + 2 + 3 + ... +(N-2)+(N-1)+ N

N +(N-1)+(N-2)+ ... + 3 + 2 + 1

然后总结相应的术语:

(N + 1)+(N + 1)+(N + 1)+ ... +(N + 1)= N(N + 1)

除以2得到结果(N + 1)N / 2

然后,(1 + 2 + 3 + ... + N + N)/ N =((N + 1)N / 2 + N)/ N =(N + 3)/ 2

旁注:有一个关于着名天才数学家卡尔·弗里德里希·高斯(1777-1855)的故事,当时他还是个男孩。他的校长给了班级一个从1到100加上数字的问题,认为这会让他们忙碌一段时间。但是,使用上述推理,高斯在几分钟后发现总和为5050。注意:高斯是一个真正的天才,但高斯的生活史很多都是由高斯写的!

答案 1 :(得分:0)

1 + 2 + ... + N + N = N(N+1)/2 + N = N((N+1)/2+1) = N(N + 3)/2