• 技术文章 >后端开发 >php教程

    PHP统计一个数字在排序数组中出现的次数

    小云云小云云2018-01-15 10:06:29原创1036
    本文主要介绍了PHP实现统计一个数字在排序数组中出现次数的方法,涉及php基于二分查找算法在数组中进行查找及统计的相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。

    题目

    统计一个数字在排序数组中出现的次数。

    题解

    既然是排序数组,使用二分查找是效率最高的。找到之后再向两侧拓展一下。

    代码


    <?php
    function GetNumberOfK($data, $k)
    {
      if(count($data)==0){
        return 0;
      }
      $index = 0;
      $low = 0;
      $high = count($data)-1;
      $middle = 0;
      //二分查找找到k的index
      while($low<=$high){
        $middle = ($high+$low)>>1;
        if($data[$middle]==$k){
          $index = $middle;
          break;
        }
        else if($data[$middle]>$k) {
          $high = $middle -1;
        }else{
          $low = $middle+1;
        }
        $index = -1;
      }
      // console.log(index);
      // 如果没找到
      if($index==-1){
        return 0;
      }
      //找到了 分别往左右查找边界
      $start = $index;
      $end = $index;
      $count = 0;
      while($data[$start]==$k){
        $count++;
        $start--;
      }
      while($data[$end]==$k){
        $count++;
        $end++;
      }
      return $count-1;
    }

    相关推荐:

    用户自定义排序数组有关问题

    在排序数组中,找出给定数字的出现次数.比如 [1, 2, 2, 2, 3] 中

    根据某一个键值重新排序数组

    以上就是PHP统计一个数字在排序数组中出现的次数的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php 数组 排序
    上一篇:PHP各版本的函数类型声明详解 下一篇:PHP调用ffmpeg对视频截图并拼接脚本实例分享
    Web大前端开发直播班

    相关文章推荐

    • 此函数是PHP中哪方面的学问,其功能是何 • PHP框架YII札记之1 • CakePHP中运用TinyMce详解 • php除了字符串首尾中英文空格 • php的一个数组有关问题

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网