牛骨文教育服务平台(让学习变的简单)
博文笔记

一个有序数组(从小到大排列),数组中的数据有正有负,求这个数组中的最小绝对值

创建时间:2013-10-22 投稿人: 浏览次数:538
#include<iostream>
using namespace std;

int search_abs_min(int *, int );
void main(){
	int array[]={-3,0};
	cout<<search_abs_min(array,sizeof(array)/sizeof(array[0]))<<endl;

	system("pause");
	
}

int search_abs_min(int*  array, int len){
	if(array == NULL || len<=0)
		return -1;
	int low=0, high=len-1;
	int mid;
	while(low<high){
		if(high - low == 1)
			return (abs(array[low]) < abs(array[high])) ? abs(array[low]) : abs(array[high]);
		mid=low + ((high-low)>>1);
		if(array[mid] > 0){
			if(array[mid-1] <= 0)
				return (abs(array[mid]) < abs(array[mid-1])) ? abs(array[mid]) : abs(array[mid-1]);
			else high=mid;
		}
		else if(array[mid] < 0){
			if(array[mid+1] >= 0)
				return (abs(array[mid]) < abs(array[mid-1])) ? abs(array[mid]) : abs(array[mid-1]);
			else low=mid;
		}
		else return 0;
	}
	return array[low];
	
}

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。