Maison >développement back-end >tutoriel php >Comment compter le nombre de fois qu'un nombre apparaît dans un tableau trié en PHP (code)

Comment compter le nombre de fois qu'un nombre apparaît dans un tableau trié en PHP (code)

不言
不言avant
2018-10-08 15:24:222589parcourir

Le contenu de cet article explique comment PHP peut compter le nombre de fois qu'un nombre apparaît dans un tableau trié (code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. vous. aider.

Comptez le nombre de fois qu'un nombre apparaît dans le tableau trié.
1. Recherche de tableau ordonné, utilisez la méthode binaire
2. Méthode binaire pour trouver la position de la première occurrence, méthode binaire pour trouver la position de la dernière occurrence, fin - début +1

left=getLeft(data,k)
right=getRight(data,k)
retun right-left+1
getLeft data,k
    left=0
    right=arr.length-1
    mid=left+(right-left)/2
    while  left<=right
        if arr[mid]<k    //关键
            left=mid+1
        else
            right=mid-1
        mid=left+(right-left)/2
    return left
getRight data,k
    left=0
    right=arr.length-1
    mid=left+(right-left)/2
    while  left<=right
        if arr[mid]<=k   //关键
            left=mid+1
        else
            right=mid-1
        mid=left+(right-left)/2
    return right
<?php
function GetNumberOfK($data, $k) 
{
        $left=getLeft($data,$k);
        $right=getRight($data,$k);
        return $right-$left+1;
}
function getLeft($arr,$k){
        $left=0;
        $right=count($arr)-1;
        $mid=intval($left+($right-$left)/2);
        while($left<=$right){
                if($arr[$mid]>=$k){//关键
                        $right=$mid-1;
                }else{
                        $left=$mid+1;
                }   
                $mid=intval($left+($right-$left)/2);
        }   
        return $left;
}
function getRight($arr,$k){
        $left=0;
        $right=count($arr)-1;
        $mid=intval($left+($right-$left)/2);
        while($left<=$right){
                if($arr[$mid]<=$k){//关键
                        $left=$mid+1;
                }else{
                        $right=$mid-1;
                }   
                $mid=intval($left+($right-$left)/2);
        }   
        return $right;
}
$arr=array(1,2,3,4,4,4,5);
$m=GetNumberOfK($arr,4);
var_dump($m);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer