Le contenu de cet article explique comment trouver la valeur minimale (code) après la rotation d'un tableau ordonné en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Déplacer les premiers éléments d'un tableau vers la fin du tableau est appelé rotation du tableau. Entre une rotation d’un tableau trié de manière non décroissante et génère le plus petit élément du tableau pivoté. Par exemple, le tableau {3,4,5,1,2} est une rotation de {1,2,3,4,5} et la valeur minimale du tableau est 1.
REMARQUE : Tous les éléments donnés sont supérieurs à 0. Si la taille du tableau est 0, veuillez renvoyer 0.
1. Utilisez la méthode de dichotomie pour trouver le plus petit élément du tableau
2 Définissez deux pointeurs gauche et droit, pointant vers le premier élément et le dernier élément. du tableau, définissez un pointeur intermédiaire mid
3. Si arr[left] est inférieur à arr[mid], alors déplacez le pointeur gauche vers mid, et mid sera recalculé 4. Si arr[left] est supérieur à arr[mid], alors déplacez le pointeur droit vers mid, mid sera recalculé et la plage sera réduite
left=0 right=arr.length-1 while arr[left]>=arr[right] if right-left==1 mid=right break mid=left+(right-left)/2 if arr[left]<=arr[mid] left=mid else right=mid return arr[mid]
<?php $arr=array(3,4,5,6,1,2); function minNumberInRotateArray($rotateArray){ $left=0;//左边指针 $right=count($rotateArray)-1;//右边指针 //判断条件,left大于right就一直进行 while($rotateArray[$left]>=$rotateArray[$right]){ //left和right已经紧挨着了 if(($right-$left)==1){ $mid=$right; break; } //中间点 $mid=ceil($left+($right-$left)/2); //left小于中间点 if($rotateArray[$left]<$rotateArray[$mid]){ //left移动到中间点 $left=$mid; }else{ //right移动到中间点 $right=$mid; } } return $rotateArray[$mid]; } $min=minNumberInRotateArray($arr); var_dump($min);//int(1)
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!