面试题参考

  题目的参考和解答思路来自http://www.cnblogs.com/nokiaguy/archive/2013/01/29/2881476.html

问题描述:

 求一个已经排序的数组(升序),数组中可能有正数,负数或0,求数组中元素的绝对值最小的数,要求不能用顺序的比较方法(复杂度需小于

O(n))。

例如,数组{-20,-13,-4,6,77,200},绝对值最小是4

问题分析:

   根据题意知道,数组是排好序的,既然已经排好序了,哪我按照常识,就应该知道绝对值最小的一定是中间的某个数?所以我认为,知道数组的大小,然后取其中间的数,如果是数组的长度是奇数,那就是中间的数,如果是偶数,那就比较中间的两个数的绝对值即可。

参考了其中一人的回帖,然后自己把它用c语言实现下

代码:

View Code

总结:
   刚开始自己写的求数组的长度的代码,出现问题,数组的访问越界了,现在想来,以前自己有些代码也是这样写的,看来以前测试通过可能也是凑巧啦,对数组的定义与使用要加深理解,如定义数组的时候为它赋值,这时系统就会根据它的赋值,为它分配了固定空间大小,你要计算长度的时候就不能采取遍历的方法,当数组为空时返回其长度,这是个严重的错误。意识到这个问题后,采取了链表的方法,对链表运用加深了理解。

 

posted @ 2017-06-30 15:32  张英爱  阅读(129)  评论(0编辑  收藏  举报
友情链接:回力鞋官网 | 中老年高档女装