加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP实现找出有序数组中绝对值最小的数算法说明

发布时间:2021-02-25 04:46:33 所属栏目:编程 来源:网络整理
导读:本篇章节讲授PHP实现找出有序数组中绝对值最小的数算法。供各人参考研究详细如下: 题目: 一个有序数组,值有也许有负值,也有也许没有,现必要找出个中绝对值最小的值。 要领1: 遍历数组,找到绝对值最小值,时刻伟大度O(n),n为元素个数。

本篇章节讲授PHP实现找出有序数组中绝对值最小的数算法。分享给各人供各人参考,详细如下:

题目:

一个有序数组,值有也许有负值,也有也许没有,现必要找出个中绝对值最小的值。

要领1:

遍历数组,找到绝对值最小值,时刻伟大度O(n),n为元素个数。

要领2:

二分查找,由于数组有序,可以操作二分查找,时刻伟大度O(logn)。

说明步调:

1. 假如第一个数为正数,声名整个数组没有负数,直接返回第一个数

2. 假如最后一个数为负数,声名整个数组没有正数,直接返回最后一个数

3. 数组元素有正有负,声名绝对值最小的元素必定在正负数接壤处,必要二分查找上场:

①. 假如a[mid]<0,由于数组是升序,声名绝对值最小的数不会呈此刻a[mid]左边,同时判定a[mid+1]元素的正负,假如为负数,那么必要在mid右侧区间举办查找,假如a[mid-1]不为负,那么声名这两个数是数组中正负接壤点,返回这两个数的绝对值较小的。

②. 假如a[mid]>0,由于数组是升序,声名绝对值最小的数不会呈此刻a[mid]右边,同时判定a[mid-1]元素的正负,假如为负数,那么声名这两个数是数组中正负接壤点,返回这两个数的绝对值较小的,假如a[mid-1]不为负,那么必要在mid以左的区间举办查找。

③. 假如a[mid] == 0,那么a[mid]即为绝对在最小的元素。

0) { //正数数组 return $arr[0]; } if ($arr[$len] < 0) { //负数数组 return $arr[$len]; } while ($start < $len) { $mid = floor(($start + $len) / 2); if ($arr[$mid] > 0) { if ($arr[$mid - 1] > 0) { $len = $mid - 1; } else { return min($arr[$mid],-$arr[$mid - 1]); } } elseif ($arr[$mid] < 0) { if ($arr[$mid + 1] < 0) { $start = $mid + 1; } else { return min(-$arr[$mid],$arr[$mid + 1]); } } else { return $arr[$mid]; } } } $sortArr = [-5,-4,5,7,9]; echo selectAbsMinNum($sortArr),PHP_EOL;

运行功效:4

更多关于PHP相干内容感乐趣的读者可查察本站专题:《》、《》、《》、《》、《》及《》

但愿本文所述对各人PHP措施计划有所辅佐。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读