究竟如何才算是o(n)时间?
纯净水o 2012-03-28 04:20:59 我现在有些搞不明白了
打个比方
一个数组8个元素 将其排序要求在o(n)时间内解出
只是打个比方
按照起泡排序
需要o(n^2)
然后 如果for(i = 1; i <=8; i++)
这样算是线性? 应该是因为1-8每个元素只便利了一遍
看下面
for(i = 1; i<=8; i++)
;
for(i = 1;i <= 8; i++)
;
也就是说1-8我循环了2次
这种也属于o(n)时间内??还是o(2n)?
如果是o(2n)我就搞不明白了
因为最近在做一道题 输油管道问题
里面的关键所在 就是求一些数的中位数
比如说 1-8个元素 排好序之后 求之中的 中间那个数
通俗点说就是N个数求第K小的数是那一个
我看了百度上的很多回答 都说这种解法 利用快速排序法
便可以在o(n)时间内完成
我仔细想想不对啊 1趟快排已经用了o(n)次 更何况1趟快排 不可能得到第K小的元素
所以我现在有些搞不明白了 究竟怎样才算是o(n)??