[php] view plaincopy
  1. # 取出数组最大的元素
  2. function getMax( $arr ){
  3. if( !is_array($arr) ){
  4. exit('参数必须是数组');
  5. }
  6. if( count( $arr ) == 0 ){
  7. exit('数组不能为空');
  8. }
  9. if( count( $arr ) ==  1 ){
  10. return array_shift( $arr );
  11. }
  12. $max = 0;
  13. foreach( $arr as $key => $value ){
  14. if( $max < $value ){
  15. $max = $value;
  16. }
  17. }
  18. return $max;
  19. }
  20. # 取出第二大的元素
  21. function getTwoMax( $arr ){
  22. if( !is_array($arr) ){
  23. exit('参数必须是数组');
  24. }
  25. if( count( $arr ) == 0 ){
  26. exit('数组不能为空');
  27. }
  28. if( count( $arr ) ==  1 ){
  29. return   $arr ;
  30. }
  31. $max = 0;
  32. $two = 0;
  33. foreach( $arr as $key => $value ){
  34. if( $max < $value ){
  35. $two = $max;
  36. $max = $value;
  37. }else{
  38. if( $max != $value ){
  39. if( $two < $value ){
  40. $two = $value;
  41. }
  42. }
  43. }
  44. }
  45. return [ 'max' => $max , 'twoMax' => $two  ];
  46. }
  47. //$arr = [ ];
  48. //$arr = array_pad( $arr , 81 , 0 );
  49. $arr = [ 99,1000,1000 ,1,10,5,25,80,35,70,27,999,25,25 ];
  50. # 桶排序
  51. function bucketSort( $arr ){
  52. $max = getMax( $arr );
  53. $i = 0 ;
  54. $arr2 = [];
  55. while( $i <= $max ) {
  56. $arr2[$i] = 0;
  57. $i++;
  58. }
  59. foreach( $arr as $k => $v ){
  60. $arr2[$v]++;
  61. }
  62. # 正序
  63. /**foreach( $arr2 as $key => $value ){
  64. while( $value ){
  65. echo $key , ' , ';
  66. $value --;
  67. }
  68. }*/
  69. # 倒序
  70. while( $max ){
  71. while( $arr2[$max] ){
  72. echo $max , ' , ';
  73. $arr2[$max] --;
  74. }
  75. $max--;
  76. }
  77. }

取出数组第一大和第二大元素相关推荐

  1. 求解第二大元素——锦标赛算法(Tournament Algorithm)

    问题 给定一个长度为的数组,请用比较次数小于的算法求出数组中的第二大元素. 求解 看到题目中的比较次数小于就知道不能先用一次循环找出最大元素,接着利用最大元素再一次循环找到第二大元素. 那么,应该怎么 ...

  2. python返回列表中最大和第二大的元素

    设计一个函数返回传入的列表中最大和第二大的元素的值. 测试输入:[1,2,3,4,5,6] 预期输出:(5,6) 测试输入:[11,2,30,4,55,6] 预期输出:(30,55) 要求不破坏原来的 ...

  3. 写一个函数找出一个整数数组中,第二大的数

    题目:写一个函数找出一个整数数组中,第二大的数. 算法分析: 1)假设数组中的前两个元素就是最大和第二大,即max和smax: 2)从数组的第二个元素开始遍历数组,当有元素大于max的时候,将max赋 ...

  4. 【锦标赛算法】找第二大元素FindSecond()

    考虑找第二大元素,会想到调用两次Findmax()算法函数(推导可以参考上篇文章).先用Findmax()算法找出最大值,然后从L中删除max,再调用Findmax()找出剩下元素中的最大元素,就是输 ...

  5. 分治法——查找问题 —— 寻找一个序列中第k小的元素和查找最大和次大元素

    查找问题: 问题一:寻找一个序列中第k小的元素 对于给定的含有n个元素的无序序列,求这个序列中第k(1<=k<=n)小的元素 分析思路: 假设无序序列存放在a[0 - n-1]中,若将a递 ...

  6. (分治法)查找最大和次大元素

    这道题本来是C的源码,但是Java没有指针,不能在函数里修改参数的值,所以只能把两个变量放到一个1*2的数组里, 用可以改变数组元素值的方式来改变变量值! java里除了用final定义的变量,其他的 ...

  7. 选第二大元素python(分治)

    给定n个元素,找出元素中的第二大元素.该问题如果用线性扫描的方法的话, 首先找出最大值,比较n-1次 然后从n-1个元素中找出最大值,比较n-2次 下面考虑设计一个选第二大元素的分治算法 1.将n个元 ...

  8. 求数组第二大元素 和 字符串拷贝的实现

    int main() {int a[] = {5,100,32,45,21,67,32,68,41,99,13,71};//首先默认第一个成员和第二个成员就是最大和第二大int max = 0; // ...

  9. 找出最大和第二大的数PHP,2020-09-01 十大经典排序算法总结php为例

    排序算法说明 1 .排序的定义 对一序列对象根据某个关键字进行排序. 2.术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面: 不稳定 :如果a原本在b的前面,而a=b,排序之后 ...

最新文章

  1. R语言caret包构建xgboost模型实战:特征工程(连续数据离散化、因子化、无用特征删除)、配置模型参数(随机超参数寻优、10折交叉验证)并训练模型
  2. 物联网的四种计算类型
  3. 使用 Cockpit 方便地管理容器
  4. 八分音符(频率)卷积算子 Octave Convolution
  5. GIT : IDEA切换到某个tag
  6. PostGreSql学习笔记002---Navicat Premium中管理PostGreSql 错误:字段rolcatupdate 不存在
  7. 由脚本创建的新元素事件不触发和用的easyUI插件中的多选框不起作用的解决方法...
  8. 解决Invalid bound statement (not found): com.hengjun.mapper.UserMapper.selectByExample,
  9. larval PHP artisan命令
  10. Spring和Spring的配置
  11. 中南大学转专业计算机名单,中南大学2010级优秀本科生转专业名单
  12. Centos7 IOS镜像包下载
  13. 阿布扎比国家石油公司与IBM合作试行区块链
  14. 串口设置波特率linux函数接口,Linux下串口编程之一:基础设置函数
  15. 华为交换机开启vlan接口流量统计功能
  16. 网络工程师操作学习指南
  17. 批量翻译软件-免费批量一键翻译软件
  18. 【转】神级代码注释 优秀的comment
  19. 杨强:从大数据到人工智能
  20. 春节“聊天宝”使用秘籍,轻松应对亲戚尬聊

热门文章

  1. 软件设计师2018下半年上午真题解析
  2. Java中如何使用转义转义字符?
  3. 一文搞懂异常检测中离群、异常、新类、开集、分布外检测异同
  4. 【TaI】GPU-based Grass Simulation with Accurate Blade Reconstruction
  5. 动手实验 CVE-2010-2883 Adobe Reader TTF字体SING表栈溢出漏洞
  6. 《Oracle内核技术解密》读书笔记(二)
  7. 意出望外的一次相遇|利楚初探 OceanBase
  8. 二分查找及查找左、右边界
  9. 信息与计算机科学专业毕业论文,《信息与计算机科学毕业论文》.doc
  10. 花 1 小时,开源设计 LoRa 继电器开关