PHP查找数组中最大值与最小值
2012-08-16 00:41
357 查看
<?php function maxMin(Array $arr) { $cmpTime = 0; $count = count($arr); $big = $small = $arr[0]; for($i = 1; $i < $count; $i++) { $cmpTime++; if($big > $arr[$i]) { $cmpTime++; if($small > $arr[$i]) { $small = $arr[$i]; } } else { $big = $arr[$i]; } } echo "ArrLeng: " . $count . "<br>"; echo "CmpTime: " . $cmpTime . "<br>"; echo "Big: " . $big . "<br>"; echo "Small: " . $small . "<br>"; } $arr = array(4, 6, 8, 1, 5, 4, 3, 9, 11, 3, 22, 100, 55, 0, 4, -1, 31, 210, -10); maxMin($arr); ?>
ArrLeng: 19
CmpTime: 29
Big: 210
Small: -10
这个方法是一个不稳定的查找,找的时候比较是n次,而最坏的时候比较是2n次,下面来看一个稳定的1.5n次比较的方法
<?php function maxMin(Array $arr) { $cmpTime = 0; $count = count($arr); $biggest = $smallest = $arr[$count - 1]; #每次取出两个元素,比较两个元素的大小再与最大值和最小值比较 for($i = 0; $i < $count - 1; $i += 2) { $cmpTime++; if($arr[$i] > $arr[$i + 1]) { $bigger = $arr[$i]; $smaller = $arr[$i + 1]; } else { $bigger = $arr[$i + 1]; $smaller = $arr[$i]; } $cmpTime++; if($bigger > $biggest) { $biggest = $bigger; } $cmpTime++; if($smaller < $smallest) { $smallest = $smaller; } } echo "ArrLeng: " . $count . "<br>"; echo "CmpTime: " . $cmpTime . "<br>"; echo "Big: " . $biggest . "<br>"; echo "Small: " . $smallest . "<br>"; } $arr = array(4, 6, 8, 1, 5, 4, 3, 9, 11, 3, 22, 100, 55, 0, 4, -1, 31, 210, -10); maxMin($arr); ?>
ArrLeng: 19
CmpTime: 27
Big: 210
Small: -10
相关文章推荐
- PHP求某二维数组,某一列元素的最大最小值
- 查找数组最大最小值
- 算法导论+编程之美,查找数组中最大值和最小值
- 设计一个更优算法查找一n个元素数组中的最大值和最小值
- 每日一题:查找数组中最大最小值
- JavaScript 查找数组中最大值与最小值
- JavaScript 查找数组中最大值与最小值
- 每日一题:查找数组中最大最小值
- 数组中,查找最大值与最小值
- Java学习笔记30. 数组的使用(长度、遍历、最大最小值,查找)
- 分治法查找数组最大最小值
- 查找数组最大值最小值:时间复杂度最多为:o(3n/2)
- 同时查找数组中最大和最小值
- PHP 查找数值数组中不重复最大和最小的10个数
- PHP查找数值数组中不重复最大和最小的10个数的方法
- 查找对象数组中某属性的最大最小值
- PHP查找数值数组中不重复最大和最小的10个数的方法
- 完成一个排序,求最大最小值,和查找数组元素的程序
- node js 下查找数组最大最小值 时间复杂度 1.5N 思路来自编程之美
- 求整型数组最大最小值