二分查找的一个题---找出排序数组中绝对值最小的数
来源:互联网 发布:网络推广这工作靠谱吗 编辑:程序博客网 时间:2024/05/25 23:27
有一个已经排序的数组,数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现,例如,数组{ -9, -6, -5, -4, -2, 3, 5, 9, 10 },绝对值最小的是-2。
这一题该如何求呢?
思路:直接用二分法进行查找,判断依据是比较a[left]和a[right]的绝对值,然后更新mid。
具体代码如下:
// FindleastABSofNumber.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include<math.h>#include<iostream>using namespace std;int FindLeastABSofNumber(int *a, int start, int end){int left;int right;int mid;left = start;right = end;while (left < right){mid = left + (right - left) / 2;if (a[mid] == 0)return a[mid];else if (a[mid]>0){right = mid;}else{left = mid;}if (right - left == 1){return abs(a[left]) < abs(a[right]) ? a[left] : a[right];//}}}int _tmain(int argc, _TCHAR* argv[]){int a[] = { -9, -6, -5, -4, -2, 3, 5, 9, 10 };int length = sizeof(a) / sizeof(int);int smallofABS=FindLeastABSofNumber(a, 0,length-1);cout << "数组中绝对值最小的数为:" << smallofABS<<endl;return 0;}
)
具体代码如下:
0 0
- 二分查找的一个题---找出排序数组中绝对值最小的数
- 求一个排序数组中绝对值最小的数
- 找出整数数组中两个数差值的绝对值最小
- 找出整数数组中两个数差值的绝对值最小
- 找出有序数组中绝对值最小的数
- 【查找】在按照绝对值排序的数组中,找出和为k的两个数的下标
- 找出有序数组中绝对值最小的元素
- 找出有序数组中绝对值最小的元素
- 【EMC笔试题】N个整数中找出三个数,使其和的绝对值最小
- 查找一个排好序的数组中绝对值不相同的数的个数
- 【二分查找】在排序数组中,找出给定数字的出现次数 以及二分其他应用
- 百度面试题:求一个已排序的数组中绝对值最小的元素
- 求一个已排序的数组中绝对值最小的元素
- 百度面试题:求一个已排序的数组中绝对值最小的元素
- 在一个旋转有序数组中,查找最小的数
- 从一个数据元素无序的整型数组中找出最小的两个数的下标
- 找出数组中第K个最小的数(快速排序)
- 输入10个数,找出其中绝对值最小的数,将它和最后一个数交换,然后输出这10个数。
- 严苛模式(StrictMode)
- UIActivityIndicatorView、UIProgressView 活动与进度指示器-IOS开发
- 基于文本挖掘和情感分析的股票价格预测系统(二)
- 理解c语言的sizeof
- 二分查找(Binary Search)需要注意的问题,以及在数据库内核中的实现
- 二分查找的一个题---找出排序数组中绝对值最小的数
- 数据源与连接池的关系
- HDU2094---产生冠军
- 第十一周项目3 - 点类派生直线类
- LeetCode Search for a Range
- 吉他和弦小记
- UIImage 图像-IOS开发
- c/c++ 笔记本
- HttpClient.execute() 阻塞问题