from:
有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现
例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。
原文用java写的,没看太懂,但很感谢博主的算法思路,即找正负数的临界值。于是我用C++实现了一遍,代码如下:
1 #include2 #include 3 using namespace std; 4 int getMinNum(int arr[],int n) 5 { 6 int index=0; 7 int temp; 8 if(arr[index]>0) 9 return arr[index];10 else if(arr[index]<0&&arr[n-1]<0)11 return abs(arr[n-1]);12 else13 {14 for(int i=index;i